js程序员

ES6新特性之var 与 let ,const的区别

2017-02-22  本文已影响0人  秘果_li

let命令

{
var p=2;
let a = 1;
}
p // 2
a // ReferenceError
p = 3;
let p;  // ReferenceError
console.log(a); // 输出undefined
var a = 2;

(这个特性会迫使程序猿们养成先定义后使用的习惯, 同时避免var的 undefined 产生难以查找的错误)

{
var a;
let a;    // error
}

{
let a=1;
let a;  //error
}

const命令

const a = 1;
a = 5;  //TypeError: Assignment to constant variable.

const p;  //SyntaxError: Missing initializer in const declaration
注意:

对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变

const a = [];
a.push('Java'); // 可运行 此时a为['Java']
a = ['script'];    // error
块级作用域的优点
  1. 避免内层变量覆盖外层变量
  2. 避免用来计数的循环变量泄露为全局变量
  3. 引入了块级作用域,允许在块级作用域之中声明函数


so

const 和 let 用起来

上一篇 下一篇

猜你喜欢

热点阅读