gpt4 book ai didi

Javascript 混淆 null、instanceof 和 typeof 的语法不一致?

转载 作者:行者123 更新时间:2023-11-30 12:27:15 25 4
gpt4 key购买 nike

var obj = {};
typeof obj; // returns "object"
obj instanceof Object // return true

typeof null // returns "object"
null instanceof Object // returns false

那怎么样

typeof undefined // return "undefined"
undefined instanceof undefined
// ERROR: Uncaught TypeError: Expecting a function in instanceof check,
// but got undefined

为什么会这样?我已经阅读了很多有关 SO 的相关主题,但仍然无法理解。

了解“typeof”会返回一个字符串,因此它几乎反射(reflect)了 Javascript 中的规则。(例如,null 是一个对象……好吧……)但是为什么“null instanceof Object”返回 false?

“x y 实例”

这是否意味着“x”必须由“y”构造函数创建?而对于 null,情况并非如此?

编辑

如果您能解释 instanceof 和 typeof 背后的不同意图,而不是语法和返回值,我们将不胜感激。

null 和 undefined 的区别

typeof null        // object (bug in ECMAScript, should be null)
typeof undefined // undefined
null === undefined // false
null == undefined // true

REF

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

最佳答案

这只是设计决定,可能是人为的或奇怪的。根据 typeof UnaryExpression 如果计算如下。我刚刚包括了重要的一点。

ECMA Spec: Return a String determined by Type(val) according to Table 20.

Table 20:
╔═════════════╦══════════╗
║ Type of val ║ Result ║
╠═════════════╬══════════╣
║ null ║ "object" ║
╚═════════════╩══════════╝

所以,我们对此无能为力。这是 .但返回 false 是正确的,因为 null 有一个单独的类型,称为 Null type

Null type: type whose sole value is the null value

null 显然不是 Object 的实例,因为它有自己的类型。只是 typeof 运算符返回 “object”。这与 javascript 的设计有关。

为什么会这样?将不得不问 Brendan Eich(Javascript 的创始人)。

关于Javascript 混淆 null、instanceof 和 typeof 的语法不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28956060/

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