Javascript - 全局变量和全局范围内的变量是否不同(在 jsfiddle 中)
Javascript - Are global variables and variables in global scope different (in jsfiddle)?
全局变量和全局范围内的变量不同吗?请参阅下面的代码或 JSfiddle 实现 - http://jsfiddle.net/2ngj9rqa/。
a = 10;
var b = 20;
function x() {
a = 20;
}
alert(window.a);
alert(window.b);
这是
JSFiddle中的一个技巧,b
被包装在onload
中,但不是window
如果你选择no wrap
,那就好了。在 plunker 中也尝试相同的方法就可以了。
您编写的代码在所有主流浏览器中都可以正常工作。它不起作用,因为它是由 jsfiddle 中的加载包装的。a和b在这里都是全局变量,它们都在全局范围内。您可以从代码中的任何位置访问它们,除非您在函数自己的作用域中引入具有相同名称的变量。有一种叫做变量范围和提升的东西。当您声明变量或为其赋值(当然使用 var 关键字)时,所有变量(隐式全局变量除外)都提升在其范围的顶部.了解有关变量和函数提升的更多信息因此,您的代码等效于以下内容:
var b;
a = 10;
b = 20;
function x() {
a = 20;
}
alert(window.a);
alert(window.b);
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 测试索引值是否等于某个数字的倍数
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- JsFiddle上的鼠标事件不起作用
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 是否可以禁用jquery中的单个单选按钮
- 是否可以从父类访问子类的属性
- HTML脚本标记是否可以包含在jsFiddle中的Javascript变量中
- 是否可以将modernizr添加到jsFiddle中,并在Chrome/ffirefox中查看css3透视图
- Javascript - 全局变量和全局范围内的变量是否不同(在 jsfiddle 中)
- jQuery UI的可拖动位置是否受到scrollTop的影响?(包括JSFiddle)