let 与 var 与 const

157 阅读1分钟

let

  • let 语句声明一个块级作用域

let x = 1;

if (x === 1) {
  let x = 2;

  console.log(x);
  // expected output: 2
}

console.log(x);
// expected output: 1

  • let 作用于for 循环 (不建议定义相同的i,不方便阅读)

for(let i = 0 ; i < 3; i++ ){
    for(let i = 0 ; i < 3; i++ ){
       console.log(i) //这里一共执行了九次
    }
}

var

  • var声明的是全局成员,存在 "变量提升" 问题
  • 变量提升: 由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明。

var x = 1;

if (x === 1) {
  var x = 2;

  console.log(x);
  // expected output: 2
}

console.log(x);
// expected output: 2

  • var 作用于for 循环 (不建议定义相同的i,不方便阅读)

for(var i = 0 ; i < 3; i++ ){
    for(var i = 0 ; i < 3; i++ ){
       console.log(i) //这里一共执行了三次 因为内层声明的i覆盖了外层声明的i
    }
    console.log("内层结束i="+i)   //3  
    
    //内层结束后 i=3; 外层的 i这时也等于3不满足循环条件所以不执行
}

const

  • const声明创建一个只读的值。

const name = 'Kobe';
name = 'James';

//报错 Uncaught TypeError: Assignment to constant variable.

小结

不用 var, 主用用 const, 对于修改的值 配合 let 使用.