本文主要是介绍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进行变量声明时
<span style="font-size:18px;">function test(n){if(n>0){let mm = 'hello';console.log(mm);} else {var ff = 'world';console.log(mm);}
}</span>
如果n小于0的情况下,执行到console.log(mm)这句时系统会报报错,这是因为mm变量采用的let声明而let声明的变量只在它所在的代码块有效
再举一个例子
function test(n){for(var i=0;i<n;i++){doRun(function(){console.log(i);});}
}
function doRun(){……
};
此时会输出两次2,这是因为var的声明变量的作用域的问题
如果采用let进行声明:
function test(n){for(let i=0;i<n;i++){doRun(function(){console.log(i);});}
}
function doRun(){……
};
此时会输出 0 1。
上面两个例子很好的说明了var和let的区别
这篇关于ECMAScript6的let命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!