【问题标题】:typeof Number equals Numbertypeof Number 等于 Number
【发布时间】:2015-03-11 20:57:08
【问题描述】:

在 JavaScript 中,

  1. typeof 42 === 'number' //true

评估为真。但是..

  1. typeof Number === 'number' //false

评估为假。还有..

  1. typeof 'number' === 'number' //false

也计算为假。

比较 2 或 3 不应该评估为真吗?

【问题讨论】:

  • 你为什么期望typeof 'number'返回'number'?你期望typeof 'foo' 会返回什么?
  • 我现在明白了。 typeof 'foo' 返回'字符串'。我想我很困惑,因为 typeof 的返回值被引用了。
  • typeof 总是返回一个字符串。

标签: javascript numbers typeof


【解决方案1】:

Number 是一个函数,可用于将本机值包装到 Numberobject 中。 Number 也是Number 类型的构造函数,如果与new 一起使用,例如

new Number(42)

来自documentation

一个 Number 对象是使用 Number() 构造函数创建的。

所以typeof Number 实际上是"function"

另一方面,'number' 是一个字符串,所以 typeof 'number'"string"

【讨论】:

  • 好的,谢谢。那么 [] === [] //false 呢? (因为 typeof [] 是 'object'?
  • @Kiwi1:两个不同的对象永远不会相等。值的type 和值本身是不同的东西。两个不同的值可以具有相同的类型。 (typeof 5) === (typeof 42) 为真,但5 === 42 为假。
  • 这两个[] 是两个不同的对象实例,因此不同。他们的类型在这里并不重要。
【解决方案2】:

不,NumberStringBoolean 都是对象(和函数)。应用于其中任何一个的typeof 将返回值"function"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean


'number' 是一个字符串,因此它的类型是'string'

【讨论】:

    猜你喜欢
    • 2020-05-09
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 2021-10-16
    • 2015-11-16
    相关资源
    最近更新 更多