var a = 10
var b = new Number(10)
console.log(a instanceof Number)
console.log(b instanceof Number)
任何人都可以让我知道上述两个声明和a和b的定义之间有什么区别。
答案 0 :(得分:1)
明确声明您使用new Number(10)
创建新号码会为该号码创建新的wrapper object,而只需将数字定义为变量即可创建integer primitive value。因此,在检查 typeof
:
var a = 10;
var b = new Number(10);
console.log(typeof a);
console.log(typeof b);
希望这有帮助! :)
答案 1 :(得分:1)
第一个创建一个原语。另一个对象。
Number对象的主要用途是:
1)如果参数不能转换为数字,则返回NaN。
2)在非构造函数上下文中(即没有new运算符),Number可用于执行类型转换。
理论上存在差异,但在实践中没有。当需要成为对象时,JavaScript引擎会自动将基元打包到对象。
var number = 42;
// calling .toFixed will 'box' the primitive into a number object,
// run the method and then 'unbox' it back to a primitive
console.log( number.toFixed(2) );
我发现的唯一用法是你想从构造函数中返回一个原语。
function Foo() {
return 42;
}
var foo = new Foo();
console.log(foo); // foo is instance of Foo
function Bar() {
return new Number(42);
}
var bar = new Bar();
console.log(bar); // bar is instance of Number
提醒
new Number(10) == new Number(10) return false
答案 2 :(得分:0)
第一个声明就像原始数据类型。
在您使用new Number(10)
的第二个声明中,它被视为包装函数或class
,以便在object
中保留您的号码。
要查看实际差异,请在两种情况下立即检查变量的实际类型:
console.log(typeof(a)) //should give you "number"
console.log(typeof(b)) //should give you "object"
答案 3 :(得分:0)
var
关键字只是变量的简单声明。 new
关键字用于生成某种类型的新object
。为了完全理解它们,你需要在编程中查看对象。