如何理解javascript中的全局和局部变量
How to understand global and local variable in javascript
第一次测试:
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
alert(a); // 1
第二次测试:
var a = 1;
function b() {
a = 10;
return;
}
b();
alert(a); // 10
在第一个测试中,a
等于1
,尽管我在方法中将其设置为10
。在第二个测试中,我将它设置为10
,当我输出它时,它被设置为10
。这是如何工作的?
函数声明function a() {}
在b
函数的本地作用域中声明了一个变量名a
(并为其分配函数)。当您分配给a
时,您将分配给该局部变量,而不是全局变量。
应用吊装后,您的代码相当于
var b = function b() {
var a = function a() {};
a = 10;
return;
}
var a = 1;
b();
alert(a); // 1, obvious now
因为提升会创建一个局部变量a
,在您尝试为其赋值之前,它会屏蔽全局变量。
在第一次测试中,您创建了一个函数,该函数存储在本地变量a
:中
function b() {
a = 10;
return;
function a() {} // can be called using a() inside this function
}
因此,您可以在函数b()
中使用a()
来调用此函数。尝试:
function b() {
a(); // alerts "hi"
a = 10;
return;
function a() { alert("hi"); }
}
现在,在局部变量a中存储数字10,而不是函数。全局变量保持不变,因此外部警报仍显示1。
第一个例子(由JavaScript)解释为:
var a = 1;
function b() {
var a = function () {};
a = 10;
return;
}
在JavaScript中,所有局部变量(在本例中是将保存函数的局部变量a)都在函数的顶部声明。
局部变量a被设置为10,而不是全局变量。返回后,它就不复存在了。
相关文章:
- 如何使用局部变量创建全局变量
- 局部变量在应用 function.call() 后变为全局变量
- 在d3.js中将局部变量转换为全局变量
- javascript中的全局和局部变量执行上下文
- MVC为局部视图制作了一个全局js变量
- 如何将局部变量反转为全局、点或括号表示法
- JavaScript局部变量和全局变量混淆
- 如何在 JavaScript 中将局部变量转换为全局变量
- 函数是否像局部变量一样适用于全局变量
- 全局访问的 JavaScript 函数局部变量
- JavaScript 中的全局变量到局部变量
- 为什么我的 JavaScript 提升的局部变量返回未定义,但提升的全局变量返回空白
- 用于将全局或属性别名为局部变量的 Word 以便更好地压缩
- 如何在 JavaScript 中检查变量是局部变量还是全局变量
- 为什么全局变量无法访问,即使稍后在代码中定义了局部变量
- 提升局部变量掩蔽全局变量
- javascript全局/局部变量,并将变量返回到HTML
- 音频暂停不起作用,全局-局部变量问题
- Javascript -全局&局部变量
- Javascript全局/局部变量