我正在學習在JS變量的作用域的概念,發現它這個例子:該功能的變量的作用域混亂的JavaScript
(function() {
var foo = 1;
function bar() {
var foo = 2;
}
bar();
console.log(foo) //outputs 1
if(true) {
var foo = 3;
}
console.log(foo) //outputs 3
})();
輸出
1
3
現在我很困惑怎麼來的foo
在第二個日誌中獲取值3。即使在if
聲明中使用var
來聲明foo
時也是如此。在if
中聲明的foo
不應該有一個新的實例,因爲它在bar()
?
JavaScript具有功能級範圍,而不是塊級功能。 'if'內的'var'與'var foo'的計數方式相同。 – Bergi
好奇爲什麼downvoters downvoting。這不是一個壞問題。也許重複,但不壞。有些問題值得贊同和接近的投票。但之前提出的好問題應該標記爲重複。以前曾經問過的很多問題應該被標記爲重複和** upvoted!**這個問題有一個清晰簡潔的代碼示例以及一個明確表達的問題。這是一個很好的問題,雖然是重複的。鏈接的副本不*很好:它缺少代碼示例並提出了多個問題。也許它應該被封閉爲「太寬泛」。 ;) – gilly3
我同意,這是一個很好的重複問題。然後,我會贊成並投票結束。 – chryss