let和const

一、let

所声明变量只在所在的代码块中有效

  1. 不存在变量提升
    typeof x; //ReferenceError
    let x;
  2. 暂时性死区

ES6明确规定如果区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域。只要在声明之前使用这些变量,就会报错。

   var tmp = 123;
    if (true) {
      tmp = 'abc'; //ReferenceError
      let tmp; 
     }
  1. 不允许在相同的作用域中重复声明
    function (){
    let a = 1;
    let a = 2;
    } // 报错

ES6的块级作用域一方面可以避免内层变量可能覆盖外层变量,另一方面可以避免用来计数的循环变量泄漏为全局变量;

二、const

  1. 一旦使用const声明,其值就不能再改变,所以声明后必须立即初始化,不能留到以后赋值

  2. 与let一样,拥有块级作用域

  3. 不存在变量提升,同样存在暂时性死区

  4. 对于复合类型,变量名不指向数据,而是指向数据所在的地址

    const foo = {};
    foo.prop = 123; // ok
    foo = {prop:123}; // typeError: 'foo' is read-only
    

真的想冻结一个对象,使用 Object.freeze()

6种声明变量方法:var,function ,let, const, import, class

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 5,535评论 0 2
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    卞卞村长L阅读 3,751评论 0 0
  • let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...
    安小明阅读 4,540评论 0 0
  • let 基本用法 let命令,用来声明变量。用法类似于var,但声明的变量,只在let命令所在的代码块内有效。 f...
    oWSQo阅读 3,169评论 0 0
  • 1.let命令 基本用法 ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let...
    冷洪林阅读 1,391评论 0 1