Number
原始值。Number
构造函数来创建一个Number
对象:var x = Number('09');
typeof x; // 'number'
var x = new Number('09');
typeof x; // 'object'
Number('1') === new Number('1'); // false
差别可能是微妙的,但我认为注意到包装对象如何作用于原始值是很重要的。
Number
返回一个原始数字值。是的,有点奇怪,你可以像普通函数一样使用构造函数,但这就是 JavaScript 的定义方式。大多数语言内置类型都有奇怪和不一致的额外特性。
new Number
构造一个显式的装箱 Number
对象。区别在于:
typeof Number(1) // number
typeof new Number(1) // object
Number
。如果你想要明确,使用parseFloat('09')
;如果你想要简洁,使用+'09'
;如果你只想允许整数,使用parseInt('09', 10)
。+
之前不加数字使用它。 - Nicole没有使用 new 关键字的 Number 似乎不能准确地返回一个原始值。在下面的示例中,如果在 Number 原型中调用 anyMethod() 方法,则会出现这种情况。
Number(3).anyMethod()
然而
3.anyMethod()
无法工作。
SpiderMonkey-1.7.0:
js> typeof new Number('09');
object
js> typeof Number('09');
number
new Number('1') === new Number('1')
也是false
,但我同意你的观点 :) - Richard SzalayNumber('1') === Number('1')
是true
,这证明了 @CMS 的观点。 - Nicole