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

吉姆·洛克伍德

作为学习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浏览器,如果有帮助的话。

因此,我的问题是,为什么函数内的局部局部变量返回未定义的状态,而全局局部变量返回空白呢?

JLRishe

这里发生的是您正在访问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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的变量在javascript中返回未定义?

为什么 js 中的提升变量显示未定义

在 JavaScript 中,为什么这个全局变量在我的函数中未定义?

RSpec分配返回的未定义局部变量错误

局部变量与全局变量,未定义名称“ EXAMPLE”

为什么未定义全局变量?

为什么我得到“未定义的局部变量或方法'rails_env'”?

为什么我的代码中出现“未定义的局部变量或方法”?

Javascript - 在已声明的全局变量中分配新值后定义局部变量会覆盖全局变量。为什么?

为什么局部变量不会在数组定义中隐藏全局变量

为什么我的变量表数据返回未定义?

Javascript中的提升/返回变量

为什么即使声明了全局变量,Javascript代码也会显示“未定义”?

为什么我的函数不将值返回全局变量?

JavaScript-为什么我的API调用变量返回未定义?

JavaScript:全局数组变量返回未定义

为什么即使稍后在代码中定义了局部变量,全局变量也无法访问

在我的主中未定义局部变量

返回指向局部变量的指针总是未定义的行为

人偶-未定义的局部变量

未定义的局部变量或方法

关于返回值的全局变量与局部变量赋值的看似语义差异

外部文件中的未定义局部变量(“为什么要对Ruby进行Poignant指南”)

javascript:从局部变量修改全局变量

Javascript 局部变量是否覆盖全局变量?

JavaScript函数内部的局部变量和全局变量

JavaScript的作用域是局部变量和全局变量

我的变量为什么返回空?

Java:为什么更改局部变量会影响全局变量原始副本?