ES6 01 let和const声明
要点:1.let声明 2.coust声明
一.let声明
1.ES6新增一个新的变量声明:let
2.创建一个块级区域,分别使用let和var声明一个变量
// 块级区域 { var value=10; let count=20; } console.log(value); console.log(count);//引用错误
3.上面例子,1.var 出了块级区域有效 2.let出了块级区域无效
4.var声明具有变量提升,视为作用域顶部声明,
5.let则不具备,离开区块作用域,变量失效
6.let更适合局部变量,容易掌控不会导致凌乱
7.变量提升区别:声明之前使用,产生结果不同
8.var在后面声明,前面输出的值不符合逻辑
9.undefined 表示变量声明了没有赋值,按理说顺序要在前面
10.let 声明方式,在后面声明,前面的输出依然引用错误
console.log(value);//underfind var value;//变量提升导致逻辑怪异 console.log(count);//引用错误 let count;
11.在一个区块内部,let声明,这个区域就形成封闭作用域
12.如果let声明前使用变量,这段区域“临时死区(暂时性死区)”简称:TDZ 用typeof会报错
if (true) { //死区开始 value=20; console.log(value); // 死区结束 let value=20; console.log(value) }
13.“临时死区(暂时性死区)”简称:TDZ ,这段用typeof会报错
14.typeof判断未声明的变量,只会输出undefined
console.log(typeof value); let value;
15.var 声明可以重复声明同一个变量,后面取代前一个
16.let声明不可以重复声明一个变量,会直接报错
let value=20; //两个let报错,let和var各一个也报错 var value=20; //报错,更换顺序报错
17.一个在作用域外部,一个在作用域内部可以并存
let value=20; { let value=10;//不建议相同,会乱 } console.log(value);//全局
18.在循环中,var,let区别:let只在循环内有效
19.var全局有效,导致后续i会引起干扰,let不会
for(let i=0;i<10;i++){ console.log(i); } console.log(i); //var声明,10; let报错
20.循环体内设置函数方法,体外输出var会得到不想要的值
var list=[]; for(var i=0;i<10;i++){ //设置成let会得到想要的值 list[i]=function(){ console.log(i) } } list[5](); //不管设置多少结果都为10
二.const声明
1.const声明的作用:创建一个只读的常量,一旦声名不可改变
2.和let声明一样,const无法提升,有临时死区
3.和let不同,const声明后必须赋值,否则报错
const PI=3.14; console.log(PI); // 常量约定俗成大写