ECMAScript6的let命令

近期学习了ECMAScript6的let新命令,故在此总结一下:

ES6中的let命令它的用法类似于var,但是与var不同的是let所声明的变量只在所在的代码块内有效。下面举两个例子可以更好的理解:

function test(n){
  if(n>0){
    var mm = 'hello';
    console.log(mm);
  } else {
    var ff = 'world';
    console.log(mm);
  }
}

 如果n小于0时,系统会输出“undefined”也就是未定义,并不会报错、原因是因为var定义的变量在此函数中
 相当于在函数前已进行了定义。上述代码等价于:

var mm,ff;
function test(n){
  if(n>0){
    mm = 'hello';
    console.log(mm);
  } else {
    ff = 'world';
    console.log(mm);
  }
}

但是如果使用了let进行变量声明时

function test(n){
  if(n>0){
    let mm = 'hello';
    console.log(mm);
  } else {
    var ff = 'world';
    console.log(mm);
  }
}
如果n小于0的情况下,执行到console.log(mm)这句时系统会报报错,这是因为mm变量采用的let声明
而let声明的变量只在它所在的代码块有效

再举一个例子

function test(n){
  for(var i=0;i
  此时会输出两次2,这是因为var的声明变量的作用域的问题


    如果采用let进行声明:

function test(n){
  for(let i=0;i
此时会输出 0 1。
 

上面两个例子很好的说明了var和let的区别






你可能感兴趣的:(js,Web)