文章源地址:http://blog.csdn.net/lcstrive/article/details/43149167
JavaScript ES6 的 let 和 var 的比較
在JavaScript 1.7中, let 關鍵詞被添加進來, 我聽說它聲明之後類似於”本地變量“, 但是我仍然不確定它和 關鍵詞 var 的具體區別。
回答:
不同點在於作用域, var關鍵詞的作用域是最近的函數作用域(如果在函數體的外部就是全局作用域), let 關鍵詞的作用域是最接近的塊作用域(如果在任何塊意外就是全局作用域),這將會比函數作用域更小。
同樣, 像var 一樣, 使用let 聲明的變量也會在其被聲明的地方之前可見。
下面是Demo 例子。
全局(Global)
當在函數體之外它們是平等的。
- let me = 'go'; //globally scoped
- var i = 'able'; //globally scoped
函數(Function)
當瞎下面這種, 也是平等的。
- function ingWithinEstablishedParameters() {
- let terOfRecommendation = 'awesome worker!'; //function block scoped
- var sityCheerleading = 'go!'; //function block scoped
- };
塊(Block)
這是不同點, let 只是在 for 循環中, var 卻是在整個函數都是可見的。
- function allyIlliterate() {
- //tuce is *not* visible out here
- for( let tuce = 0; tuce < 5; tuce++ ) {
- //tuce is only visible in here (and in the for() parentheses)
- };
- //tuce is *not* visible out here
- };
- function byE40() {
- //nish *is* visible out here
- for( var nish = 0; nish < 5; nish++ ) {
- //nish is visible to the whole function
- };
- //nish *is* visible out here
- };
外文文章出處: Javascript - “let” keyword vs “var” keyword