为什么undefined是数据类型

用户名

我最近在调试时了解到,undefined是一种数据类型,null是一个对象。

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

我检查了typeof undefinedtypeof null他们分别返回“未定义”“对象”

typeof undefined 
"undefined"

typeof null
"object"

有人可以解释为什么这是奇怪的行为。

本杰明·格伦鲍姆(Benjamin Gruenbaum)

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.

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

不明确的

这意味着运行时“知道此变量”,但尚未将其设置为任何值。或者,如语言规范所述:

未定义值-未为变量分配值时使用的原始值。

例如:

 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*/})()

明确没有

当您拥有应该具有值的东西但想要声明它什么都不是时。或者,如语言规范所述:

空值-表示故意不存在任何对象值的原始值。

例如,document.getElementById("foo");返回null如果给定ID的元素不在DOM指示明确没有返回。将其与没有return语句的函数进行比较,以使它们返回undefined默认值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么undefined是数据类型

来自分类Dev

为什么使用“ int”数据类型而不是“ float”数据类型?

来自分类Dev

为什么不将“函数”视为javascript中的数据类型?

来自分类Dev

为什么Writable数据类型应该是Mutable?

来自分类Dev

为什么变量中的数据类型编码风格不好

来自分类Dev

为什么OpenCL没有矩阵数据类型?

来自分类Dev

为什么有人使用int数据类型?

来自分类Dev

为什么通常不实现分数数据类型?

来自分类Dev

为什么会收到部分数据类型?

来自分类Dev

为什么C ++中不同数据类型的大小不同

来自分类Dev

python为什么数据类型由def函数更改?

来自分类Dev

Pandas 为什么我的列数据类型会改变?

来自分类Dev

为什么不同数据类型的地址不同[Python]?

来自分类Dev

为什么“where”改变原始数据类型

来自分类Dev

对于Java中的这种情况,为什么原始数据类型比参考数据类型消耗更多的内存?

来自分类Dev

对于Java中的这种情况,为什么原始数据类型比参考数据类型消耗更多的内存?

来自分类Dev

为什么通用代数数据类型在成员类型上要求`T`?

来自分类Dev

为什么Pandas数据框将整数转换为浮点数据类型

来自分类Dev

为什么不同的数据类型会为相同的数据占用更多的内存?

来自分类Dev

为什么PostgreSQL中的聚合函数不适用于布尔数据类型

来自分类Dev

为什么返回Windows BOOL数据类型而不返回int?

来自分类Dev

为什么planet_osm_ways表中的tag列的数据类型不是JSON格式?

来自分类Dev

为什么要为.NET数字数据类型使用构造函数?

来自分类Dev

为什么我的数据类型需要Monoid实例才能使用此镜头?

来自分类Dev

为什么C#中bool数据类型的大小不是只有1位?

来自分类Dev

为什么Java在声明原始数据类型时不允许null

来自分类Dev

在Java中,为什么String是非原始数据类型?

来自分类Dev

rethinkdb协议:为什么将数字数据类型定义为Double

来自分类Dev

为什么声明之后的初始化需要数据类型?

Related 相关文章

  1. 1

    为什么undefined是数据类型

  2. 2

    为什么使用“ int”数据类型而不是“ float”数据类型?

  3. 3

    为什么不将“函数”视为javascript中的数据类型?

  4. 4

    为什么Writable数据类型应该是Mutable?

  5. 5

    为什么变量中的数据类型编码风格不好

  6. 6

    为什么OpenCL没有矩阵数据类型?

  7. 7

    为什么有人使用int数据类型?

  8. 8

    为什么通常不实现分数数据类型?

  9. 9

    为什么会收到部分数据类型?

  10. 10

    为什么C ++中不同数据类型的大小不同

  11. 11

    python为什么数据类型由def函数更改?

  12. 12

    Pandas 为什么我的列数据类型会改变?

  13. 13

    为什么不同数据类型的地址不同[Python]?

  14. 14

    为什么“where”改变原始数据类型

  15. 15

    对于Java中的这种情况,为什么原始数据类型比参考数据类型消耗更多的内存?

  16. 16

    对于Java中的这种情况,为什么原始数据类型比参考数据类型消耗更多的内存?

  17. 17

    为什么通用代数数据类型在成员类型上要求`T`?

  18. 18

    为什么Pandas数据框将整数转换为浮点数据类型

  19. 19

    为什么不同的数据类型会为相同的数据占用更多的内存?

  20. 20

    为什么PostgreSQL中的聚合函数不适用于布尔数据类型

  21. 21

    为什么返回Windows BOOL数据类型而不返回int?

  22. 22

    为什么planet_osm_ways表中的tag列的数据类型不是JSON格式?

  23. 23

    为什么要为.NET数字数据类型使用构造函数?

  24. 24

    为什么我的数据类型需要Monoid实例才能使用此镜头?

  25. 25

    为什么C#中bool数据类型的大小不是只有1位?

  26. 26

    为什么Java在声明原始数据类型时不允许null

  27. 27

    在Java中,为什么String是非原始数据类型?

  28. 28

    rethinkdb协议:为什么将数字数据类型定义为Double

  29. 29

    为什么声明之后的初始化需要数据类型?

热门标签

归档