let關鍵字宣告變數是在es6中引入的 ,使用let宣告變數主要有以下特點:
1 使用let宣告的變數具有塊級作用域
if(true)
console.log(a) //a is not defined
2 使用let宣告的變數沒有變數提公升
console.log(a)
let a = 10;//cannot access 'a' before initialization
3 使用let宣告的變數具有暫時性死區
var num = 10;
if(true)
4 let 宣告的變數不能重複宣告
let num = 10;
let num = 20;
console.log(num);//identifier 'num' has already been declared
下面來看乙個經典的例子
var arr = ;
for(var i=0;i<2;i++)
}arr[0]() //2
arr[1]() //2
函式呼叫的結果,輸出的都是2,為什麼會出現這樣的原因呢。主要是因為,當函式呼叫的時候,迴圈早就結束了,而變數i此時已經成為了全域性變數,並且值為2,再呼叫函式輸出i的值肯定也是2了。
我們可以把**稍微改造下 如下:
var arr = ;
for(let i=0;i<2;i++)
}arr[0]() // 0
arr[1]() // 1
這樣輸出的值就是我們所期待的了,把var換成let之後,每次迴圈的時候,變數i的值都會儲存在當前的塊級作用域內,所以在函式呼叫的時候,輸出的也是當前塊級作用域裡的儲存的值了。 ES6 let變數宣告
var 宣告的變數在window上 用let或者const去宣告變數,這個變數不會被放到window上 array.foreach function currentvalue,index,arr thisvalue 如果瀏覽器對let已經支援了,其實絕大部分情況下var都可以被替換成let,以後盡量...
ES6 let變數與var變數的區別
一,let不存在變數提公升,可以理解為let變數在使用前必須先宣告再使用不存在預解析,否則就會報錯,而var宣告的變數存在預解析即變數提公升,舉個例子 這段 的結果為undefine,原因為瀏覽器在解析 時,會先解析變數a然後逐步載入 即解析過程為 當使用let宣告變數a時,瀏覽器則會直接報錯,這是...
es6 let命令的基本用法
首先,let命令是es6新增的,也是用來宣告變數的,但它與var不同的是 只在let命令所在的 塊內有效 換一句話說就是 let命令宣告的變數只在當前作用域內有效 包括它的子作用域 那麼結合它的特徵概括起來就是 let是es6用來宣告只在當前作用域內有效,不存在變數提公升,不能重複宣告的,會形成暫時...