奇怪的可变范围问题
Strange variable scope issue
我不太确定为什么会发生这种情况,如果有人能向我解释这一点,那就太好了。
所以我得到了以下代码:
var text = 'yes';
(function f() {
alert(text);
})();
它按预期提醒"是"。但是如果我像这样扩展它:
var text = 'yes';
(function f() {
alert(text);
var text = 'no';
})();
我几乎希望这也会提醒"是",然后覆盖本地范围内的文本变量。但相反,它会发出未定义的警报。
这在当前的Chrome和Firefox中进行了测试,所以这似乎是一种通缉行为?!
变量(和函数)声明被提升到范围的顶部。所以你的代码等效于:
var text = 'yes';
(function f() {
var text; // shadows the outer variable; initialised with `undefined`
alert(text); // still undefined
text = 'no'; // now it has the value 'no'
})();
您将其声明为该范围内的新变量,因此它不会覆盖。尝试:
var text = 'yes';
(function f() {
alert(text);
text = 'no';
})();
演示
相关文章:
- setInterval游戏循环的范围问题
- firefox中的Javascript事件范围问题
- jQuery“this”范围问题
- 可以't在quizz页面范围问题上用最终分数更新变量
- JavaScript 函数变量范围问题
- 奇怪的可变范围问题
- AngularJS中的范围问题
- 如何在 JavaScript for D3.js 中解决这样的范围问题
- 我可以设置这个吗'某事'在该服务中动态创建的嵌套对象中的服务?(可能是范围问题)
- Angular.js的多个rest调用范围问题
- Angular-$http范围问题
- setTimeout范围问题
- NodeJS回调范围问题
- javascript函数的可变范围问题
- 可能存在Javascript范围问题
- 函数之间的Javascript变量范围问题
- 单击视图时的应用器范围问题
- 全球不断改变价值.可能通过引用或范围问题传递?帮助!链接中的详细示例
- 挖空 - 单击绑定到对象函数 - 范围问题
- Angular 在 http 请求后不更新页面(范围问题?