let var const 区别

来源:互联网 发布:mac自动同步iphone照片 编辑:程序博客网 时间:2024/05/01 16:13
  1. 块级作用域绑定的let const 为JavaScript引入了词法作用域,它们声明的变量不会提升,而且只可以在声明这些变量的代码中使用。
function getValue(condition) {if (condition) {let value = "blue";return value;} else {//变量value此处不存在return null;}//变量value此处不存在}
  1. 这一新特性还存在一个副作用,即不能在声明变量前访问它们,就算用typeof这样安全的操作符也不行。在声明前访问块级作用域会导致报错,因为绑定在临时死区(TDZ)中。
if (condition) {console.log(value); //引发错误let value = "blue";return value;}

  1. 循环中的使用。在for-in for-of循环中,let和const都会每次迭代时创建新绑定,从而使循环体内创建的函数可以访问到相应迭代的值,而非最后一次迭代后的值(像使用var那样)。let在for循环中同样如此,但在for循环中使用const声明则可能引发错误。
  2. 当前使用块级绑定的最佳实践是:默认使用const,只在确实需要改变变量的值时使用let。这样就可以在某种程度上实现代码的不可变,从而 一些错误的产生。
原创粉丝点击