gpt4 book ai didi

javascript - 为什么我的 JavaScript 提升的局部变量返回未定义,但提升的全局变量返回空白?

转载 作者:行者123 更新时间:2023-11-28 07:27:06 24 4
gpt4 key购买 nike

作为学习 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 浏览器,如果这有什么不同的话。

所以,我的问题是,为什么函数内提升的局部变量返回 undefined,而提升的全局变量返回空白?

最佳答案

这里发生的情况是您正在访问 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();

关于javascript - 为什么我的 JavaScript 提升的局部变量返回未定义,但提升的全局变量返回空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29527326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com