我遇到了一些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)。 –