ECMAScript
1.ES和js的关系:ES是JavaScript的标准,JavaScript是ES的实现。
ES6的拓展
let和const
2:let是ES6新增的一个用来定义变量的关键字。
let和var的区别:
(1)var有变量提升,let没有变量提升,先声明再使用
(2)var允许变量重复定义,let就不允许
(3)var定义的变量属于函数作用域,let定义的变量属于块作用域。
(4)let定义的变量有暂时性死区,var没有
应用: let和for循环
for (let i = 0; i < lis.length; i++) {
lis[i].onclick = function () {
alert(i);
}
}
//上面代码可以拆分为如下:
//系统每一次都会产生一个新的变量,来保存上一次变量的值,并且赋值给下一次的循环
// { let i = 0; // let temp; { lis[0].onclick = function () { alert(i) } // i++; temp = ++i; } { // let i = 1; i = temp; lis[1].onclick = function () { alert(i) } temp = ++i; } { // let i = 2; i = temp; lis[2].onclick = function () { alert(i) } temp = ++i; } { let i = temp; lis[3].onclick = function () { alert(i) } temp = ++i; } }
2 const
它是使用来定义常量,let所拥有的特点,const都有
特点:不允许被重新赋值,常量必须在定义的时候,就初始化(赋值);建议:const定义的常量的名称,一般为大写;用途:用于定义项目中的公共内容,变量。
3 ES6中数组的解构
数组特点是有序的哈希解构
let arr=[1,2,3];//模式一致
let [a,b,c]=arr//按顺序解构
//console.log(a,b,c)
分析:因为有序,在解析数据的时候,按照顺序解析和赋值所以有常见的解构:
1 完全解构
2 不完全结构
3 解构失败
4 结构变量赋值
5 解构的缺省
//1.完全解构(变量的个数与数据个数一致)
// let [a, b] = [10, 20];
// console.log(a, b);
//2.不完全解构(变量的个数少于数据的个数)
// let [a] = [10, 20];
// console.log(a);
//3.解构失败(变量的个数多于数据的个数)
let [a, b, c] = [10, 20]
console.log(a, b, c);
//4.解构的默认值
let [a=0, b=0, c = 0] = [10, 20];//c默认值为0
// let [a, b, c = 0] = [10, 20,30]
console.log(a, b, c);
//5.解构的缺省
let [, , , b] = [10, 20, 30, 40];
3 对象的解构
对象是无序的哈希结构,对象的解构需要借助属性名来做
语法:let {属性名1:变量,属性名2:变量}=对象;
常见的情况:
完全解构,
不完全解构
解构失败
解构默认值
示例:`
//1.完全解构(变量个数与对象的属性个数一致)
// let { code: a, msg: b, data: c } = obj;
// console.log(a, b, c);
//2.不完全解构
// let { data: rst } = obj;
// console.log(rst);
//3.解构失败
// let { code: a, msg: b, data: c, info: d } = obj;
// console.log(d);
//4.解构默认值
let { code: a, msg: b, data: c = [], info: d = '' } = obj;
console.log(d);//''
console.log(c);
`
-注意:若对象的属性名和变量保持一致,则可以简化对象的解构写法