我已經經歷的Javascript功能範圍,並已運行到這一點:的Javascript奇數範圍界定行爲
var scope = "global";
function f(){
console.log(scope);
var scope = "local";
console.log(scope);
}
f();
現在我明白,第一個日誌的輸出爲「不確定」,因爲JS如何在吊變量函數的頂部。但是當我從var var =「local」中刪除var時,第一個日誌輸出「全球」,這讓我撓了撓頭。有人可以解釋爲什麼會發生這種情況嗎?我的意思是不js順序運行代碼?因此,如何消除VAR對第一個日誌有任何影響?
你的var語句使「範圍」本地,隱藏全局。一旦你定義它,它將成爲你設置的字符串的本地。由於var提升,你的函數在內部作爲函數運行f(){var scope; ... – dandavis
提升起重吊裝...我會嘗試找到一個重複的問題指向你。 – bfavaretto
[奇怪的JavaScript範圍問題]的可能的重複(http://stackoverflow.com/questions/17662458/strange-javascript-scoping-issue)。另見:http://www.adequatelygood.com/JavaScript-Scoping-and-Histing.html – bfavaretto