我遇到了一些JavaScript函數的問題,這些函數讓我撓了腦子大約一個小時,直到某些放置良好的alert()的東西讓我感到驚訝。看來,一個函數正在改變另一個函數的局部變量。我寫了一個簡單的測試腳本:一個函數改變另一個函數的局部變量?
function first() {
msg = "1111";
second();
alert(msg);
}
function second() {
msg = "2222";
}
當我第一次調用()我期望得到一個警告框,說「1111」,但我得到「2222」代替。 second()如何影響屬於first()的局部變量?我錯過了什麼或者這是一個錯誤?
我使用的是Firefox 12.0。使用var語句時
在函數內部沒有'var msg ...'的地方不是本地的。 –
https://developer.mozilla.org/en/JavaScript/Guide/Values%2C_Variables%2C_and_Literals#Variable_scope(如果您是JavaScript新手,整本指南都值得一讀) –
我曾經對變量作用域感到困惑,然後我學會了[閉嘴並熱愛封閉範圍](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work)。 –