作为学习JavaScript的一部分,我尝试编写代码来演示我正在学习的概念。今天我正在学习提升变量。这是我写的代码:
console.log("A: My name is " + name);
function happy() {
console.log ("1: I am " + feeling);
var feeling = "happy";
console.log ("2: I am " + feeling);
}
happy();
var name = "Jim";
console.log("B: My name is " + name);
我期望得到以下结果:
A: My name is undefined
1: I am undefined
2: I am happy
B: My name is Jim
但是,当在WriteCodeOnline.com和另一个沙箱中测试我的代码时,将显示第一个console.log A: My name is
。我正在使用Chrome浏览器,如果有帮助的话。
因此,我的问题是,为什么函数内的局部局部变量返回未定义的状态,而全局局部变量返回空白呢?
这里发生的是您正在访问window.name。
这是上的预定义属性window
,因此您的帐户var name
实际上并未创建新变量。全局范围中已经有一个具有该名称的名称,默认情况下,它具有空白字符串值。
要观察期望的行为,可以使用而不是变量名name
,或将代码放入函数中:
function hoisting() {
console.log("A: My name is " + name);
function happy() {
console.log ("1: I am " + feeling);
var feeling = "happy";
console.log ("2: I am " + feeling);
}
happy();
var name = "Jim";
console.log("B: My name is " + name);
}
hoisting();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句