gpt4 book ai didi

JavaScript 变量提升示例

转载 作者:行者123 更新时间:2023-11-30 06:53:19 26 4
gpt4 key购买 nike

我对 JavaScript 中的变量提升有疑问。

考虑以下示例:

var myName = "Richard"; // Variable assignment (initialization)

​function myName () {
console.log ("Rich");
}

console.log(typeof myName); // string

我实际上很困惑为什么 typeof myName 返回为 string

按照我的理解,这个例子会进行如下处理;

  1. 首先将函数声明(function myName ())提升到顶部,然后
  2. JS 解释器会读取 var myName = "Richard" 行(因为函数声明优先于变量声明)。但是,由于已经有一个名为“myName”的属性,因此该语句将被忽略。

因此 typeof myName 应该作为函数(而不是字符串)返回。

我的理解哪里不对?

最佳答案

JavaScript 有一个动态类型系统,即变量的类型可以随时间改变。基本上,您编写的内容是正确的:首先,函数声明得到运行(在加载文件时),但随后存储在变量 myName 中的函数被字符串覆盖。

唯一被忽略的是对 var 的调用,因为实际上已经声明了变量。

但是重新定义一个变量是完全有效的(这就是你在这里所做的,通过分配一个新值)。

最后,你的样本不过是这样的:

var x = 23;
x = 'foo';

这也可以,x 将是 'foo',其类型将是 string。与您的示例唯一不同的是,在您的示例中,涉及 function 类型的值。

关于JavaScript 变量提升示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26729693/

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