ES6-let&const

以下是对 ES6-let&const的学习


ECMAScript是浏览器脚本语言的规范,而我们熟知的JS语言,如JavaScript则是规范的具体实现。

let与var对比(做项目中习惯用let声明变量)

  • var声明的变量往往会越狱 (let 是在代码块内有效,var 是在全局范围内有效:)
  • let声明的变量有严格局部作用域
1
2
3
4
5
6
{
var a=1;
let b=2;
}
console.log(a); //1
console.log(b); //ReferenceError:b is not defined
  • var可以声明多次
  • let只能声明一次
    1
    2
    3
    4
    5
    6
    var  m=1;
    var m=2;
    let n=3;
    let n=4;
    console.log(m); //2
    console.log(n); //Identifier 'n' has already been declared
  • var 会变量提升
  • let 不存在变量提升
    变量 b 用 var 声明存在变量提升,所以当脚本开始运行的时候,b 已经存在了,但是还没有赋值,所以会输出 undefined。
    变量 a 用 let 声明不存在变量提升,在声明变量 a 之前,a 不存在,所以会报错。
    1
    2
    3
    4
    console.log(x); //  undefined
    var x = 10;
    console.log(y); //Cannot access 'y' before initialization
    let y = 20;

    const声明变量 (只读变量)

  • 声明之后不允许改变
  • 一旦声明必须初始化,否者会报错
1
2
const a = 1;
a = 3; //Uncaught TypeError: Assignment to constant variable.

const 如何做到变量在声明初始化之后不允许改变的?其实 const 其实保证的不是变量的值不变,而是保证变量指向的内存地址所保存的数据不允许改动


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!