塊級作用域綁定的let const 為JavaScript引入了詞法作用域栈顷,它們聲明的變量不會提升逆日,而且只可以在聲明這些變量的代碼中使用。
這一新特性還存在一個副作用萄凤,即不能在聲明變量前訪問它們室抽,就算用typeof這樣安全的操作符也不行。在聲明前訪問塊級作用域會導(dǎo)致報錯靡努,因為綁定在臨時死區(qū)(TDZ)中坪圾。
循環(huán)中的使用。在for-in for-of循環(huán)中惑朦,let和const都會每次迭代時創(chuàng)建新綁定兽泄,從而使循環(huán)體內(nèi)創(chuàng)建的函數(shù)可以訪問到相應(yīng)迭代的值,而非最后一次迭代后的值(像使用var那樣)漾月。let在for循環(huán)中同樣如此病梢,但在for循環(huán)中使用const聲明則可能引發(fā)錯誤。
當(dāng)前使用塊級綁定的最佳實踐是:默認使用const梁肿,只在確實需要改變變量的值時使用let蜓陌。這樣就可以在某種程度上實現(xiàn)代碼的不可變,從而 一些錯誤的產(chǎn)生吩蔑。