新的数字(值)如何在js中工作?

时间:2013-06-17 03:04:13

标签: javascript

<script>
var num = new Number(43);
console.log(num);
</script>

根据这里的教程:http://www.w3schools.com/jsref/jsref_obj_number.asp

Syntax
var num = new Number(value);
Note: If the value parameter cannot be converted into a number, it returns NaN (Not-a-Number).

问题:

在firebug-&gt;控制台中,它显示:Number {},而不是我期望的Number {43},无论我放入new Number(value)的数字是多少;它始终显示:Number {}那么使用new Number(value)的目的是什么?它是如何工作的?顺便说一下,我在谷歌上搜索,但没有找到一个很好的解释。

2 个答案:

答案 0 :(得分:1)

Number(43)是一个数字原语,但new Number(43)将从该数字原语创建一个对象。显示Number {}就是Chrome控制台如何显示这样的对象。

new Number(43)仍会像数字一样“行为”。在控制台中:

var num = new Number(43); // Number {}
num == 43 // true
num + 5 // 48
num === 43 // false, since the types don't match.

有关new工作原理的详细信息:How does the new operator work in JavaScript?。如果您只想要一个数字原语,请不要使用new

答案 1 :(得分:0)

数字基元和数字对象之间存在差异。当您使用new关键字时,您将创建一个新的数字对象,这是您所看到的。您可以使用valueOf获取数字对象的值,该值返回基元:

> var n = new Number(42);
> n.valueOf()
42