写在最前面:
(1). ECMAScript6.0(以下简称ES6,ECMAScript是一种由Ecma国际通过ECMA-262标准化的脚本),是JavaScript语言的下一代标准,2015年6月正式发布,从ES6开始的版本号采用年号,如ES2015,就是ES6。ES2016就是ES7
(2). ECMAScript是规范,JS的规范的具体实现。
①. let | const | var
- ①. let是块级作用域,函数内部使用let定义后,对函数外部无影响
<script> //1.var申明的变量有变量提升,如果不初始化会输出undefined,不会报错。 console.log(num)//undefined var num = 10 console.log(num)//10 console.log(num2)//报错 (let申明的变量没有变量提升) let num2 = 10 console.log(num2)//10 //2.外部的num变量与内部let声明的变量是没有关系的 //利用let声明的变量会绑定在这个块级作用域,不会受外界的影响 var num3=10 if(true){ //由于内部的num3和外部没有关系,这里的num3是let num3,所以这里会报错 console.log(num3) let num3=5; console.log(num3) } //3.let只能声明一次,声明多次相同变量会报错 let a=5; let a=10; </script>
②. const定义的变量不可以修改,而且必须初始化
<script> /* 1、具有块级作用域 2、声明常量必须赋值 3、赋值后值不能修改(存储地址不可更改) */ //例 const ary = [100, 200]; ary[0] = 'a'; ary[1] = 'b'; console.log(ary); // ['a', 'b']; ary = ['a', 'b']; // Assignment to constant variable </script>
③. var定义的变量可以修改,如果不初始化会输出undefined,不会报错
②. 数组、对象解析表达式
- ①. 解析表达式两种情况
- 数组赋值:如果解构不成功,变量的值为undefined
- 对象赋值
<script> //1.数组赋值 let [a, b, c, d] = [1, 2, 3]; console.log(a)//1 console.log(b)//2 console.log(c)//3 console.log(d);//undefined //如果解构不成功,变量的值为undefined //2.对象赋值 let {name,age}={"name":"xiaozhi","age":23} console.log(name) console.log(age) // 起別名 let person={name:"tangzhi",age:"24"} let {name:myName,age:myAge}=person; console.log(myName); console.log(myAge); </script>