var 關鍵字
在 ES5 及以前,通過var在塊級作用域中宣告的變數,外邊也可以訪問,塊級作用域就是一對{}的作用域;塊級作用域可以是控制陳述句的作用域,也就是非函式的作用域,
function f() {
{ var x = 10; }
console.log(x); // => 10
}
在 for 回圈體中的變數 i,可以被列印出來,假如因為代碼過多,不知道何時間變數重命名了,只有運行時才報錯,又因為只有函式才可以創建一個塊級作用域,所以,針對于上面出現的問題,就要通過 IIFE 來創建一個塊級作用域,Ben Alman 將它命名為立即執行的函式運算式(IIFE):
function iife() {
(function () {
for (var i = 10; i > 0; i--) {}
})();
console.log(i); // => Uncaught ReferenceError: i is not defined
}
let 關鍵字
var可以穿透控制陳述句、條件陳述句這樣的作用域,導致變數沖突經常發生,所以,ES6 的let就可以很好的解決我們的煩惱,這也是為什么現在推薦使用let來宣告變數,而非var,
function f() {
for (var i = 10; i > 0; i--) {}
console.log(i); // => Uncaught ReferenceError: i is not defined
}
補充
如果不給 IIFE 函式加上分號,啟用格式化代碼之后可能導致兩個 IIFE 函式連在一起:
(function () {
// ...
})()(function () {
// ...
})();

可以通過!或void來避免:
!(function () {
// ...
})()
void (function () {
// ...
})()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/503472.html
標籤:JavaScript
上一篇:【微信小程式】知識點:頁面事件
下一篇:JavaScript學習
