JavaScript ES6中常量,我们与var的对比详解

  

ECMAScript 6新增常量和让命令,用来声明变量。

  

           声明方式   变量提升   作用域   初始值   重复定义         常量   否   块级   需要   不允许         让   否   块级   不需要   不允许         var   是   函数级   不需要   允许            

  

<强>变量提升:常量和让必须先声明再使用,不支持变量提升

        控制台。日志(c1, l1, v1);//报错//未捕获ReferenceError: c1没有定义      const c1=癱1”;   让l1=發1”;   var v1=皏1”;      

<强>作用域: const,让支持块级作用域,有效避免变量覆盖

        const c21=癱21”;   让l21=發21”;   var v21=皏21”;      如果(0.1 + 0.2 !=0.3){   const c21=癱22”;   让l21=跋贰?   var v21=皏22”;      控制台。日志(c21 l21 v21);//输出c22戏v22   }      控制台。日志(c21 l21 v21);//输出c21 l21 v22      

块级作用域,在外层不能直接访问内层变量

        如果(0.1 + 0.2 !=0.3){   const c22=癱22”;   让戏=跋贰?   var v22=皏22”;      控制台。日志(c22戏,v22);//输出c22戏v22   }      控制台。日志(c22戏,v22);//报错//未捕获ReferenceError:没有定义//同样地,戏没有定义      

const定义常量,该常量不能赋值,但该常量的属性可以赋值

        const c231={};   const c232=[];      c231.name=' 7 ';   c232.push (27);      控制台。日志(c231 c232);//输出{名称:“七”}[27]//禁止给对象赋值,应该使用Object.freeze      const c233=Object.freeze ({});   const c234=Object.freeze ([]);      c233.name=' 7 ';//普通模式下不报的错//严格模式下报的错//未捕获TypeError:不能添加属性名,对象不是可扩展      c234.push (27);//普通模式下就会报的错//未捕获TypeError:无法添加属性0,对象不是可扩展的      控制台。日志(c233 c234);//输出{}[]      

全局变量不再设置为顶层对象(窗口)的属性,有效避免全局变量污染

        const c24=癱24”;   让l24=發24”;      控制台。日志(c24 l24);//输出c24 l24      console.log(窗口。c24 window.l24);//输出未定义定义      的

符合预期的循环

        (var=0;我!=3;我+ +){   setTimeout(函数(){   console.log(我);   },10);   }//依次打印      (让我=0;我!=3;我+ +){   setTimeout(函数(){   console.log(我);   },10);   }//依次打印,为啥呢      

可以看到在为循环中使用让方式声明变量才是符合预期。
  

  

在为中每一次循环,让都是重新声明变量,并且因为JavaScript引擎会记住上一次循环的值,初始化我时在上一轮的基础上计算。

  

可以看到在为循环中至少有两层作用域,看下面的例子更容易理解。

        (让我=0;我!=3;我+ +){   让我=' 7 ';   console.log(我);   }   console.log (8);//依次打印   七个   七个   七个   8      

<强>初始值: const声明的变量必须设置初始值,且不能重复赋值。

        const c3=癱3”;   让l3=發3”;   var v3=皏3”;      控制台。日志(c3, l3, v3);//输出c3 l3 v3      c3=2;//未捕获TypeError:分配常数变量   l3=2;   v3=2;      控制台。日志(c3, l3, v3);//输出c3 2 2      const c32;//报错//未捕获SyntaxError:失踪的初始化在常量声明      

重复定义:常量和让不支持重复定义

  

const,让缩小了变量作用域,完美避免变量污染;const固定变量(即固定变量类型),对于弱类型JavaScript来说,可以明显提升性能。推荐在应用中使用常量,让声明变量。

  

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
  

JavaScript ES6中常量,我们与var的对比详解