let 以及 const

es6 相关知识点

 let 以及 const

let命令javascript

  • let 声明的变量只在它所在的代码块有效。java

    //let 声明 只在当前做用域有效
    var a = [];
    for (let i = 0; i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6](); // 6
    
    //var 声明 在全局做用域有效
    var a = [];
    for (var i = 0; i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6](); // 10
  • let 不存在变量提高,在let声明以前使用变量,会报错ReferenceErrores6

    // var 的状况
    console.log(foo); // 输出undefined
    var foo = 2;
    
    // let 的状况
    console.log(bar); // 报错ReferenceError
    let bar = 2;
  • let 不容许重复声明数组

    // 报错
    function () {
      let a = 10;
      var a = 1;
    }
    
    // 报错
    function () {
      let a = 10;
      let a = 1;
    }

不能在函数内部从新声明参数数据结构

function func(arg) {
  let arg; // 报错
}

function func(arg) {
  {
    let arg; // 不报错
  }
}

const 命令函数

  • 一旦声明,常量的值就不改变,只在声明所在的块级做用域有效。
  • const 命令声明的常量也是不提高,一样存在暂时性死区。
  • 本质: const 实际上保证的,不是变量的值不能改动,而是变量指向的那个内存地址不得改动。对于简单的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,所以等同于常量。但对于复合类型(引用类型)的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针, const 只能保证这个指针是固定的,至于它指向的数据结构是否是可变的,不能控制。
相关文章
相关标签/搜索