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); // 常量约定俗成大写

 

posted @ 2021-11-23 19:46  翟莹萍  阅读(64)  评论(0编辑  收藏  举报