4
在下面的示例中,JavaScript似乎完全忽略了我的return
語句,並且只是執行代碼。返回後執行的JavaScript代碼
var x = 1;
(function() {
x = 2;
return;
var x = 3;
})();
console.log(x); // Outputs 1 in both Chrome and FF
肯定的代碼應該輸出2
?如果我從var x = 3
中刪除var
關鍵字,則會按預期輸出2
。這裏有一些奇怪的編譯器優化工作嗎?
我認爲'x'在函數內部是不同的。簡單的修復就是'window.x = 2' – Madushan
由於@dystroy表示變量聲明被提升到函數作用域的頂部。因此,因爲你有var x = 3,所以var x get被懸掛在頂端,並使x = 2成爲局部變量。如果你只是把x = 3(沒有var),那麼console.log會輸出2 –