ES6?關(guān)鍵字?let?和?ES5?及關(guān)鍵字?var?的區(qū)別解析
var 關(guān)鍵字
在 ES5 及以前,通過var在塊級作用域中聲明的變量,外邊也可以訪問。塊級作用域就是一對{}的作用域;塊級作用域可以是控制語句的作用域,也就是非函數(shù)的作用域。
function f() {
{ var x = 10; }
console.log(x); // => 10
}
在 for 循環(huán)體中的變量 i,可以被打印出來,假如因?yàn)榇a過多,不知道何時間變量重命名了,只有運(yùn)行時才報(bào)錯。又因?yàn)橹挥泻瘮?shù)才可以創(chuàng)建一個塊級作用域,所以,針對于上面出現(xiàn)的問題,就要通過 IIFE 來創(chuàng)建一個塊級作用域。Ben Alman 將它命名為立即執(zhí)行的函數(shù)表達(dá)式(IIFE):
function iife() {
(function () {
for (var i = 10; i > 0; i--) {}
})();
console.log(i); // => Uncaught ReferenceError: i is not defined
}
let 關(guān)鍵字
var可以穿透控制語句、條件語句這樣的作用域,導(dǎo)致變量沖突經(jīng)常發(fā)生。所以,ES6 的let就可以很好的解決我們的煩惱,這也是為什么現(xiàn)在推薦使用let來聲明變量,而非var。
function f() {
for (var i = 10; i > 0; i--) {}
console.log(i); // => Uncaught ReferenceError: i is not defined
}
補(bǔ)充
如果不給 IIFE 函數(shù)加上分號,啟用格式化代碼之后可能導(dǎo)致兩個 IIFE 函數(shù)連在一起:
(function () {
// ...
})()(function () {
// ...
})();

可以通過!或void來避免:
!(function () {
// ...
})()
void (function () {
// ...
})()
到此這篇關(guān)于ES6 關(guān)鍵字 let 和 ES5 及以前關(guān)鍵字 var 的區(qū)別的文章就介紹到這了,更多相關(guān)ES6 關(guān)鍵字 let 和 ES5內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript實(shí)現(xiàn)的搜索及高亮顯示功能示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)的搜索及高亮顯示功能,涉及javascript字符遍歷與頁面元素屬性相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
利用js給datalist或select動態(tài)添加option選項(xiàng)的方法
下面小編就為大家分享一篇利用js給datalist或select動態(tài)添加option選項(xiàng)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
使用mock.js隨機(jī)數(shù)據(jù)和使用express輸出json接口的實(shí)現(xiàn)方法
這篇文章主要介紹了使用mock.js隨機(jī)數(shù)據(jù)和使用express輸出json接口的實(shí)現(xiàn)方法,需要的朋友可以參考下2018-01-01
javascript簡寫常用的12個技巧(可以大大減少你的js代碼量)
這篇文章主要跟大家分享了javascript簡寫常用的12個技巧,通過這12個技巧可以大大減少你的js代碼量,看懂一種是入門,全懂就是大神,你能知道幾個呢?需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)下吧。2017-08-08
JS 實(shí)現(xiàn)雙色表格實(shí)現(xiàn)代碼
通過為<tr>元素添加屬性或類型選擇器,再通過CSS設(shè)置可以實(shí)現(xiàn)雙色表格,但如果表格很長,逐個元素添加可真麻煩。而且這樣的代碼維護(hù)起來不容易。所以比較好的方式是用JS實(shí)現(xiàn)。2009-11-11

