js中var和let的快速区别

先看下面的几个例子:

  1.

var a = 99;            // 全局变量a
f();                   // f是函数,虽然定义在调用的后面,但是函数声明会提升到作用域的顶部。 
console.log(a);        // a=>99,  此时是全局变量的a
function f() {
  console.log(a);      // 当前的a变量是下面变量a声明提升后,默认值undefined
  var a = 10;
  console.log(a);      // a => 10
}

// 输出结果:
undefined
10
99

  2.

{ 
  var i = 9;
} 
console.log(i);  // 9

  3.

{ 
  let i = 9;     // i变量只在 花括号内有效
} 
console.log(i);  // Uncaught ReferenceError: i is not defined

  总结:在ES6中开始用let来定义块级作用域变量,let没有变量的提升,用let声明的变量要求必须等let声明语句执行之后,该变量才能使用不然会报Uncaught ReferenceError 错误,而且let变量不能进行重复声明

 

 

             

posted @ 2018-09-04 13:55  清梦徐徐丶莫  阅读(375)  评论(0编辑  收藏  举报