你能幫我理解JS爲什麼這樣工作嗎?Javascript未定義的變量函數內部重新定義
var timer = 3;
var func = function() {
alert(timer);
var timer = 5;
}
func();
它返回我「未定義」。
如果我做
var timer = 3;
var func = function() {
alert(timer);
timer = 5;
}
func();
它按預期工作(警報3)。
這是與範圍,我不明白正確的東西。 不應該在警報之後覆蓋「timer」的定義嗎?
僅在鉻上進行測試。
謝謝你們。
它被稱爲'變量提升'..只是查找相同的。 – gurvinder372
吊裝。無論何時定義'var xxx','var'定義都會被移動到作用域的頂部(在本例中爲函數的第一行;在alert()之前)。 – h2ooooooo