在JSFiddle中,为什么这个全局变量没有定义在' window '上?
In JSFiddle, why is this global variable not defined on `window`?
我有一个小提琴代码:
var a = 1;
function b() {
var a = 10;
alert(window.a);
}
b();
为什么这里没有定义a
?它已经在全局命名空间中定义,即window
。
如果您在没有位置设置为"No wrap"的情况下运行此代码,或者您不在顶级作用域的任何情况下,您的外部a
是而不是全局变量window.a
。考虑一个简单的例子,您的代码被包装在一个名为wrappingFunc
的函数中:
// THIS would be the global `a`, outside `wrappingFunc`
var a = "now the global a is defined";
function wrappingFunc() {
// this is NOT the global `a`
var a = 1;
function b() {
var a = 10;
alert(window.a);
}
b();
}
wrappingFunc();
当您将位置设置为onLoad
或onDomready
时,这正是JSFiddle所做的。(参见onLoad, onDomready,无换行
wrappingFunc
示例实际上是onload
或ondomready
侦听器函数,它防止keep在全局上下文中运行。
相关文章:
- $window.ga在AngularJS事件中未定义
- 如何将所有作业自定义到window.location.href
- 为什么我不能将未定义分配给 window.load
- 为什么window.onload函数未定义
- window.location.href窗口未在javascript中定义
- 出现错误:TypeError:window.event在我的javascript代码的firefox中未定义
- 使用window.location时未定义变量
- $window错误'$窗口未定义'Angular应用程序中的谷歌分析代码
- Window.opener 未定义在 IE8 中
- Phonegap 和 window.device 在 onDeviceReady for iOS7 中未定义
- 重定义对最顶层窗口的引用 (window.top)
- parent.window.location.pathname 返回未定义
- 自定义光标在使用 window.history.replaceState 时闪烁
- 在 window.print 中添加自定义页眉页脚,该页脚显示在每个页面上
- Window.getSelection在Firefox中未定义-区分大小写
- 为什么Firefox说window.event是未定义的?(添加了事件侦听器的调用函数)
- window.frameElement在Google Chrome中本地时未定义,在线时有效
- 重新定义window.console函数时,请保留原始路径位置
- 为什么在此特定版本的Windows/IE中未定义window.opener
- 在 drupal 块中自定义 window.print()