【问题标题】:Case of names of built-in JavaScript types内置 JavaScript 类型名称的大小写
【发布时间】:2013-04-17 23:11:13
【问题描述】:

在 JavaScript 中,typeof 0 提供 'number' 不是 'Number',而是 instanceof 0 Number

准确地说内置类型的规范名称大写,typeof 的小写返回值是一个怪癖/不一致,由于历史原因无法更改,但如果它可能是?还是我错过了什么?

【问题讨论】:

  • 不知道,但是 Javascript 中的约定是构造函数以大写字母开头,而 Number 是构造函数(或者严格来说,是可以称为构造函数的函数),因此大写。注意typeof new Number() 返回object。 :-)

标签: javascript naming built-in-types


【解决方案1】:

不,

实际上 number 是内置值类型,其中 Number 是一个对象。

如果你说 typeof 则不需要临时将 0 转换为 Object。

如果你使用instanceof,它会暂时将0转换为一个对象。

这类似于你对字符串所做的:

"sometest" => 这是一个字符串

但是,如果您要执行"sometest".toLowerCase(),它将首先(临时)将字符串转换为字符串对象,然后调用该对象上的方法(因为值类型不能有方法)。

总之,小写表示值类型,大写表示对象

【讨论】:

  • 嗯,这里的区别在于对象类型和值类型之间。如果你看一下第 4.3.9 到 4.3.21 节,你会发现它们是空类型和空值、布尔类型和布尔值……有点令人困惑的是它们不要在规范中一致地使用大写和小写。
  • 它始终使用“数字类型”,但在 ES5 中不使用小写的“数字类型”。它还在伪代码中始终使用 Type(x)。我删除了我之前的评论,因为它脱离了上下文:引用是指规范类型,而不是一般类型。
猜你喜欢
  • 2015-12-27
  • 2019-08-03
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 2010-11-07
  • 1970-01-01
  • 2015-02-09
相关资源
最近更新 更多