Javascript - 全局变量和全局范围内的变量是否不同(在 jsfiddle 中)

Javascript - Are global variables and variables in global scope different (in jsfiddle)?

本文关键字:jsfiddle 是否 变量 全局变量 全局 范围内 Javascript      更新时间:2023-09-26

全局变量和全局范围内的变量不同吗?请参阅下面的代码或 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);