ES6基础总结(上)

ES6基础 1、每个js文件都是一个独立的模块2、导入其他模块成员使用import关键字3、向外共享模块成员使用export关键字基于node.js体验ES6模块化v14.15.1更高版本的node.js在package.json根节点中添加"type":"module"节点。 阅读详情

ES6基础总结(上)

1. let关键字

let关键字是ES6中新增的用来取代var声明变量的关键字

1.2 let声明的变量只在所处于的块级作用域(一对大括号产生的作用域)有效
if(true){
    let a=10;
    var b=20;
}
console.log(a);//a is not defined
console.log(b);//20
1.3 还可以防止循环变量变成全局变量
for(let i=0;i<2;i++){

}
console.log(i);//i is not defined

注意:使用let关键字声明的变量具有块级作用域,使用var关键字不具有该特点

1.4 不存在变量提升,必须先声明在使用
console.log(a);//a is not defined
let a=20;
1.5 暂时性死区

在块级作用域内使用let关键字声明的变量,会被整体绑定到这个块级区域内,不再受外部代码影响

2. 变量的解构赋值

ES6允许按照一定模式从数组和对象中提取值,对变量进行赋值。

2.1 数组的解构
const F4=['zz','xx','cc'];
let [z,x,c]=F4;
console.log(z);
console.log(x);
console.log(c);
2.2 对象的解构
const zhao={
    name:'zz',
    age:22,
    xiaopin:function(){
        console.log("111");
    }
}
let {name,age,xiaopin}=zhao;
console.log(name);
console.log(age);
console.log(xiaopin);
xiaopin();

3. 模板字符串

ES6引入新的声明字符串的方式 ``

3.1 声明
let str=`新的字符串`;
console.log(str,typeof str);
3.2 内容可以直接出现换行符
let str=`<ul>
        <li>11</li>
        <li>22</li>
        <li>33</li>
        </ul>`;
3.3 变量拼接
let lovest='zz';
let out=`${lovest}11111`;
console.log(out);//zz11111

4. 简化对象的写法

ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法

let name='zz';
let change=function(){
    console.log('111');
}
const school={
    name,
    change,
    //在对象里面声明方法的原始方式
    // import:function(){
    //     console.log("222");
    // }
    //ES6写法
    import(){
        console.log("222");
    }
}
console.log(school);

在这里插入图片描述

5. 箭头函数

ES6允许我们使用 箭头 (=>) 定义函数

//声明函数的原始方式
// let fun=function(){
// }
//ES6箭头函数的写法
let fn=(a,b)=>{
    return a+b;
}
//调用
let result=fn(1,2);
console.log(result);//3
5.1 箭头函数的特性
5.1.1 this 是静态的,this 始终指向函数声明时所在作用域下的 this 的值
function getName(){
    console.log(this.name);
}
let getName1=()=>{
    console.log(this.name);
}
//设置 window 对象的 name 属性
window.name='zz';
const school={
    name:'xx';
}
//调用
//因为函数在直接调用的情况下 this 指向window
getName();//zz
getName1();//zz

//call()方法调用 该方法对于原始的函数是可以改变 this 指向的
getName.call(school);//xx
getName1.call(school);//zz

总结:
因此,箭头函数的this指向永远都是在该函数所声明的作用域下,任何方法都不会改变,因为箭头函数的this是静态的。

5.1.2 不能作为构造函数去实例化对象
const Person=(name,age)=>{
    this.name=name;
    this.age=age;
}
let me=new Person('zz',22);
console.log(me);// Person is not a constructor
5.1.3 不能使用 arguments 变量

我们通常会在函数内部使用 arguments 来保存实参

let fn=()=>{
    console.log(arguments);
}
fn(1,2,3);//arguments is not defined
5.1.4 箭头函数的简写
  • 1)省略小括号:当形参只有一个的时候
let add=n=>{
    return n+n;
}
let num=add(2);
console.log(num);//4
  • 2)省略花括号:当代码体只有一条语句的时候,此时return必须省略,而且语句的执行结果就是函数的返回值
let pow=n=>n*n;
console.log(pow(3));
5.1.5 案例
  • 1)点击div 2s 后改变颜色
<div id="ad"></div>
    <script>
        //1. 点击div 2s 后改变颜色
        let ad=document.querySelector('#ad');
        //原始的写法
        // ad.addEventListener('click',function () {
        //     let that=this;
        //     setTimeout(function () {
        //         that.style.background='pink';
        //     },2000)
        // })
        //引入箭头函数后的写法
        ad.addEventListener('click',function () {
            setTimeout( () => {
                this.style.background='pink';
            },2000)
        })
    </script>
  • 2)从数组返回偶数的元素
<div id="ad"></div>
    <script>
        const arr=[2,3,4,5,6,7,8];
        //原始的写法
        // const result=arr.filter(function (item) {
        //     if(item % 2 === 0){
        //         return true;
        //     }else{
        //         return false;
        //     }
        // })
        //引入箭头函数后的写法
        const result=arr.filter(item=>item%2===0);
        console.log(result);
    </script>

箭头函数适用于与 this 无关的回调,定时器,数组的方法回调
箭头函数不适合与 this 有关的回调,事件回调,对象的方法

6. 函数参数的默认值设置

ES6允许给函数的参数赋予初始值,具体是指形参

6.1 形参的初始值,具有默认值的参数,一般位置靠后
function add(a,b,c=10){
    return a+b+c;
}
let result=add(1,2);
console.log(result);//13
6.2默认值可以与解构赋值结合
function connect({host='127.0.0.1',username,password,port}){
    console.log(host);//127.0.0.1
    console.log(username);//root
    console.log(password);//root
    console.log(port);//3306
}
connect({
    username:'root',
    password:'root',
    port:3306
})

7. rest参数

ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments

7.1 ES5获取实参的方式,获取到的是一个对象不是一个数组
function fun(){
    console.log(arguments);
}
fun(1,2,3);

在这里插入图片描述

7.2 ES6的 rest 参数
function data(...args) {
    console.log(args);
}
data('1','2','3');

在这里插入图片描述

res 参数必须放到参数的最后,如果有多个参数就必须放到参数的最后

function fn(a,...args,b) {
    console.log(a);
    console.log(b);
    console.log(args);
}
fn('1','2','3','4');

在这里插入图片描述

8. 扩展运算符

扩展运算符 … 该运算符能够将数组转换为逗号分割开的参数序列

const arr=['11','22','33','44'];
function fn(){
    console.log(arguments);
}
//在不加 ... 之前 直接打印 arr 得到的时arr数组 长度为1
fn(...arr);

在这里插入图片描述

虽然扩展运算符 … 和我们的res参数 … 一样,但是使用的方式不一样,res 是使用在函数的形参里面,并且是最后一个形参,而扩展运算符 … 则使用在我们函数调用的实参里面。

8.1 扩展运算符的应用
  • 1)数组的合并
const arr=['11','22'];
const arr1=['33','44'];
//ES5的写法
// const add=arr.concat(arr1);
//扩展运算符写法
const add=[...arr,...arr1];
console.log(add);
  • 2)数组的克隆
const arr2=['55','66'];
const arr3=[...arr2];
console.log(arr3);//'55','66'
  • 3)将伪数组转换成真正的数组
<div></div>
<div></div>
<div></div>
<script>
    let div=document.querySelecter('div');
    //ES5正常打印
    //console.log(div);//__proto__:Object(伪数组)
    //利用扩展运算符
    let divs=[...div];
    console.log(divs);//__proto__:Array
</script>

9. Symbol的介绍与创建

ES6引入了一种新的数据类型Symbol,表示独一无二的值,他是JavaScript的第七中数据类型,是一种类似于字符串的数据类型。
Symbol特点:

    1. Symbol的值是唯一的,用来解决命名冲突的问题
    1. Symbol值不能与其他数据进行运算
    1. Symbol定义的对象属性不能适用 for…in 循环遍历,但是可以使用 Reflect.ownKeys 来获取对象的所有键名
//创建Symbol
let s=Symbol();
// console.log(s,typeof s);//Symbol() 'symbol'
let s1=Symbol('zz');
let s2=Symbol('zz');
console.log(s1=== s2);//false 虽然Symbol里面传入的值都一样 但是反返回的结果不一样,看似一样的值实际上就相当于一个是zz1一个是zz2
//Symbol.for 创建
//通过这样的方式创建我们可以通过括号内传入的字符串在确定唯一的Symbol值
let s3=Symbol.for('cc');//对象函数
let s4=Symbol.for('cc');//对象函数
console.log(s3===s4);//true

七种数据类型
Number
Null
String
Symbol
Object
Boolean
Undefined

9.1 Symbol创建对象属性

Symbol的作用就是表示独一无二的值,表示给对象添加属性和方法
向对象中添加方法 up down

let game={

};
//添加方式一
//声明一个对象
// let methods={
//     up:Symbol(),
//     down:Symbol()
// };
// game[methods.up]=function(){
//     console.log('111');
// }
// game[methods.down]=function(){
//     console.log('222');
// }
//添加方式二
let youxi={
    name:'333',
    //Symbol()是一个表达式 是一个动态的 不能直接Symbol():function(){} 因此我们需要在 Symbol()外边加一个中括号
    [Symbol('say')]:function(){
        console.log('444');
    },
    [Symbol('zibao')]:function(){
        console.log('555');
    }
};
console.log(youxi);

10. 迭代器

迭代器是一种接口,为各种不同的数据结构提供统一的访问机制,任何数据解构只要部署iterator解构,就可以完成遍历操作
1) ES6创造了一种新的遍历命令 for…of 循环,iterator 接口主要提供 for…of 进行遍历
补充:
for in 语法里面 in 前面的变量在遍历后保存的是键名
for of 语法里面 of 前面的变量在遍历后保存的是键值
2) 原生具备 iterator 接口的数据(可用 for of 遍历)
a) Array
b) Arguments
c) Set
d) Map
e) String
f) TypedArray
g) NodeList
3) 工作原理
a) 创建一个指针对象,指向当前数据结构的起始位置

const arr=['11','22','33'];
const iterator=arr[Symbol.iterator]();
console.log(iterator);

在这里插入图片描述

b) 第一次调用对象的next方法,指针自动指向数据结构的第一个成员
const arr=['11','22','33'];
const iterator=arr[Symbol.iterator]();
console.log(iterator.next());

在这里插入图片描述

c) 接下来不断调用next方法,指针一直往后移动,直到指向最后一个成员
const arr=['11','22','33'];
const iterator=arr[Symbol.iterator]();
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());

在这里插入图片描述

d)每调用next方法返回一个包含value和done属性的 

**注意:**当需要自定义遍历数据时,要想到迭代器

JavaScript高级——ES6基础入门 前言ES6(ECMAScript 6),也被称为ES2015,是JavaScript的第六个版本.它于2015年发布,并在现代JavaScript开发中扮演了重要的角色.学习方法:看千遍,不如自己动手写一遍遇到问题不要怕,微笑着面对它记笔记let 和 constconst和let是在ES6中引入的两个新的变量声明关键字,用于声明变量的作用域。const:const用于声明一个常量,其值在声明后不能被修改。常量必须在声明时进行初始化,而且不能再次赋值。 阅读详情

相关推荐

Elasticsearch 7.6 - Springboot应用基础操作篇

上文已经说了基础的API操作,那么在java中要如何实现呢?本文就是在Springboot框架下实现索引、映射、一系列查询(高亮、精准、聚合、分词、排序、分页)、批量操作等

共勉 2243

ES6基础入门

ES6基础入门ES6简介ES6基础编程let命令let命令存在块级作用域Let不存在变量提升Let暂时性死区const 命令字符串的扩展-模板字符串函数的扩展rest参数函数的扩展-箭头函数箭头函数的语法使用箭头函数的注意点this指向问题使用箭头函数简化回调函数rest参数与箭头函数结合 ES6简介 1、ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。 2、它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程

『愚』的博客 7755

Javascript.6——ES6【Promise基础】

好了,同学们,咱们终于到了这个阶段的最重要的一部分,也是内容最多的一部分,当然了,也是。相对来说,比较复杂的一部分,咱们前端学学开发呢,它其实坎儿不多啊,其中一个坎儿呢,就是在这儿。promise这是ES6给我们新搞出来这么一个东西,你要说不学这个玩意儿,能不能做开发呢?当然可以。但是呢,现在呢,在公司里边啊,很多异步场景的处理,异步我们之前讲过了,针对异步场景的处理呢很多地方都会使用这个promise,这个promise啊。它的作用呢,就是用来处理异步场景的,因为ES6觉得之前的异步场景太拉垮了。

weixin_63215361的博客 701

【前端知识】es6基础语法介绍

概述1. 变量声明:let 和 const2. 模板字符串3. 解构赋值4. 箭头函数5. 默认参数值6. 类(Classes)7. 模块8. 扩展运算符(Spread Operator)9. 对象字面量增强10. 符号(Symbols)11. 迭代器(Iterators)和生成器(Generators)12. 承诺(Promises)基本数据类型1. 字符串(String)2. 数字(Number)3. 布尔值(Boolean)4. 未定义(Undefined)5. 空值(Null)

wendao76的专栏 2200

英语语法-句法

摘要:本文系统梳理了英语句法知识,重点解析了五种基本句型及其扩展结构。内容包括句子类型(陈述句、疑问句、祈使句、感叹句)、复合句构成(从句分类与连词使用)、特殊句型(倒装、强调、引语转换)等。特别强调句子成分分析技巧,指出每种句子成分可由不同词法单元充当,需掌握成分识别与划分方法。文章还提供了往期语法系列链接,形成完整的英语语法学习体系,帮助读者建立从词法到句法的系统认知框架。

STCNXPARM的博客 8798

uniapp无感刷新token实现过程

可以看到已经触发了刷新token接口,并且重新请求上次失败的列表接口,无感刷新token逻辑已经正常,但为什么列表接口请求成功,还一直loading没关闭捏,就是因为后续代码未执行,await接口的返回没有成功resolve。路漫漫其修远兮,前端道路逐渐迷茫,时隔好久好久终于想起了我还有一个小博客,最近在一直在弄uniapp,属实有被恶心到,但也至少会用了,最近实现了一个比较通用的功能,就是无感刷新token,但在过程中发现一个问题就是。3、排查await的列表接口为何没有成功resolve。

weixin_40618068的博客 3594

es6基础

es6教程: 目录 es6教程: 1 ES5扩展内容: 1 es6语法: 3 因为vue和react很多底层都是es6实现的所以学习react和vue之前有必要学习一下es6。 Es5是09年发布的es6是15年发布的之后几乎每一年发布一个版本的es,但是由于时间间隔比较短,很多功能不一定能够实现,但是es6基本已经实现了甚至现在的es8都有很多实现了。 ES5扩展内容: Es5严格模式: 减少浏览器的怪异行为,和js设计的一些不合理之处为未来的js做好铺垫。 使用use strict 严格模式的约束: 必

weixin_44708911的博客 366

STM32移植u8g2库(HAL库)(硬件SPI)(sh1106_128x64)

STM32移植u8g2库(HAL库)(硬件SPI)(sh1106_128x64) MCU型号为STM32F103RCT6,OLED屏为中景园电子1.3寸屏,驱动芯片为sh1106,分辨率为128x64,MDK版本为V5.34。

Master_0_的博客 6270

ES6基础内容

head></head><body><script>name:'1班',stus:['张三','李四','王五'],//索引变量return{done:false//下标自增index++;//返回结果return res;

2401_82398807的博客 1161

RT-Thread littefs控制GD32F4xx片内Flash

GD32F4xx RT-Thread下使用littefs 控制片内flash 调试记录

madao1234的博客 995

基于 Simulink 的固态变压器(SST)多级协同控制实战教程

《固态变压器多级协同控制仿真指南》摘要: 本教程详细讲解了基于Simulink的固态变压器(SST)三级架构建模与控制方法。核心内容包含:1)搭建级联H桥整流(CHB)、双有源桥(DAB)和逆变器(VSI)的三级主电路;2)提出创新的多级协同控制策略,通过功率前馈实现输入输出级动态匹配;3)给出系统级功率平衡、单元级均压控制的具体实现方案。教程特别强调解决实际工程中的关键问题:代数环处理、软启动设计和刚性系统求解器选择,并提供了硬件在环(HIL)仿真建议。附带的MATLAB代码示例可直接用于实现电容电压均衡

xiaoheshang_123的博客 117

Es6开发环境及基础语法

文章目录Es6开发环境及基础语法Nodejs安装开发基础语法注释常量和变量标识符声明数据类型字符串转义字符字符串操作方法数值型number常量属性数字的方法内置数学对象math运算符算数运算符挑战题比较运算符逻辑运算符位运算三元运算符逗号操作符其他运算符优先级表达式 Es6开发环境及基础语法 Nodejs Nodejs 是服务器端运行的JavaScript的开源,跨平台运行环境,原始作者瑞安·达...

鑫仔之行 1109

【VoxCPM2】在Windows上从零搭建VoxCPM2 语音生成和语音克隆AI算法

建议你了解清楚VoxCPM2,再来考虑是否需要自己在本地搭建。

AnChenliang_1002的博客 750

ES6基础语法与模块化编程

介绍ECMAScript6基础语法

匿名攻城狮 727

IM 系统设计:仿微信架构,Netty + Protobuf + WebSocket 如何支撑百万级长连接?

相比 JSON,Protobuf 的体积通常只有前者的 1/5 到 1/10,且解析速度快一个数量级。// 消息类型:1-登录,2-心跳,3-单聊,4-群聊,5-ACK// 发送方ID// 接收方ID// 消息内容// 时间戳// 消息唯一ID,用于去重和ACK。

BUG猿的博客 1378

手把手教你RK3588 NPU驱动与RKNN Toolkit,AI开发不迷路!

本文详细介绍了RK3588 NPU驱动安装与RKNNToolkit使用方法。首先阐述了RK3588芯片在嵌入式AI领域的优势,包括6TOPS算力和混合量化支持。随后分步骤讲解了NPU驱动安装流程,包括准备工作、编译安装、验证调试及常见问题解决。接着全面介绍了RKNNToolkit的环境搭建、基本使用流程和图像分类实战案例,涵盖模型转换、推理优化等关键环节。最后展望了RK3588在智能安防、工业自动化等领域的应用前景,为开发者提供了完整的嵌入式AI开发指南。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 432

ES6语法基础总结

此篇文章为ES6简单的语法基础个人总结,有利于精简代码,高效开发。

王红珠的博客 272

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ES6基础知识点

ES6入门学习笔记

zysp158的博客 345

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ES6基础知识总结1

ES6基础 1.什么是ES6? ES6是javascript的第六代版本,全称为ECMAScript。 变量声明let与const let 局部变量,在一对{}内有效 不能重复声明 不能变量提升 if (true) { let a = 10; } console.log(a) console.log(a); let a = 10; const 声明常量 声明是必须赋值 赋值完不能被修改(值类型,引用类型可修改) 变量名建议大写 const T

qq_45891136的博客 3476

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

重学ES6基础

一 目录 目录 一 目录 二 前言 三 let & var & const 四 块级作用域 五 解构赋值 六 展开运算符 七 Set 八 Map 九 新增函数拓展 十 新增数组拓展 十一 新增字符串拓展 十二 新增对象拓展 十三 Babel 十四 ES6 高级 - 异步专题 十五 ES6 高级 - MVVM 十六 总结 十七 参考文献 二 前言 返回目录 ECMAScript 2015,简称 ES6。 E

weixin_43956521的博客 527

JavaScript-ES5和ES6基础讲解(上)

ES5 : ECMAScript 5 ES5的严格模式:即更严格的模式 在这种模式下执行,浏览器会对JS的要求更苛刻,语法格式要求更细致,更符合逻辑。 怪异模式:就是我们之前一直使用的开发模式,就叫怪异模式。 声明严格模式:"use strict"; "use strict"; //声明严格模式 n=123 console.log(n); //这里面代码打印会直接报错,采用了严格模式后对应的内容需要更加规范,不支持8进制 eslint 代码检查器 设立严格格...

OuYyds的博客 1952

ES6基础以及babel的环境配置

本文笔记基于B站视频资源:【智能社】ES6精讲—主讲老师:石川(Blue)—高清版本 非商业用途自由转载,保持署名,注明出处! 文章目录1.ES62.基础语法2.1 变量2.1.1 声明2.1.2 解构赋值2.2 函数2.2.1 箭头函数2.2.2 参数、数组、Json展开2.2.3 原生对象扩展3.babel.js编译4.异步操作4.1 Promise 1.ES6 ECMAScript约等于...

微子细的博客 1021

ES6基础语法

qq_25741071的博客 92
上一篇: JS高级-正则表达式
下一篇: ES6基础总结(下)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值