var name = 'World!';
(function () {
if (typeof name === 'undefined') {
var name = 'Jack';
console.log('Goodbye ' + name);
} else {
console.log('Hello ' + name);
}
})();
var name ;
name = 'World!';
(function () {
var name;
if (typeof name === 'undefined') {
name = 'Jack';
console.log('Goodbye ' + name);
} else {
console.log('Hello ' + name);
}
})();
因為你自執行函數內也有一個 name變量,自執行函數內的變量name是用var進行聲明的 會提升到自執行函數的作用域頂端
即你的代碼可以粗略的看為這樣執行的
注意變數提升,你的程式碼解析後變成如下