gpt4 book ai didi

javascript - 为什么undefined是一种数据类型

转载 作者:数据小太阳 更新时间:2023-10-29 06:11:45 26 4
gpt4 key购买 nike

最近在调试的时候了解到,undefined是数据类型,null是对象。

我认为它们都属于数据类型。

我检查了typeof undefinedtypeof null。他们分别返回了"undefined""object"

typeof undefined 
"undefined"

typeof null
"object"

有人可以解释为什么会出现这种奇怪的行为。

最佳答案

typeof null 成为对象是一个早期的错误 - 当他们尝试在 Chrome 中每晚更正它时(到 typeof null === "null" )太多的东西依赖关于当前行为和太多代码损坏。

没有设置正常值的JavaScript对象一般有三种状态:

  1. 未声明。
  2. 未定义。
  3. 明确表示没有。

未声明

例如 - 这种情况:

 y++; //I did not declare y before, this causes a reference error
y === 'undefined'; //still a reference error
typeof y; //'undefined', since typeof is an operator and not a function.

基本上,一个未声明的变量处于“脚本不知道这个变量”的状态。

未定义

这意味着运行时“知道这个变量”但是它还没有被设置为任何东西。或者,正如语言规范所说:

undefined value - primitive value used when a variable has not been assigned a value.

例如:

 var y; //y is undefined
y === undefined; //true, y defined the line above
typeof y; //undefined, but this is redundant, just do `=== undefined`
(function(x){ /* x is undefined here as it was set to nothing*/})()

明确没有

当你有一些东西应该有一个值,但你想声明它什么都不是。或者,正如语言规范所说:

null value - primitive value that represents the intentional absence of any object value.

例如,document.getElementById("foo"); 如果具有给定 ID 的元素不在 DOM 中则返回 null 以指示显式无 被退回。将此与没有返回语句的函数进行对比,因此它们返回默认的 undefined

关于javascript - 为什么undefined是一种数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21754999/

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