我正在學習JavaScript自己。今天我遇到了一個代碼示例,這是很混亂。Javascript函數變量應該生成錯誤,而不是未定義
function fool(a, b){
if(b)
var c = "Mary"
alert(c);
}
fool(1, true); //Returns "Mary"
fool(1, false); //Returns undefined instead of error
在另一方面,如果我這樣做
function fool(a, b){
//if(b)
// var c = "Mary"
alert(c);
}
fool(1, true); //Firebug error: ReferenceError: c is not defined
fool(1, false);
的錯誤是在第一次機會出現。這是怎麼回事?
閱讀有關[_variable hoisting_(http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html) – Rayon