Var和new之间的区别

时间:2017-10-17 03:01:03

标签: javascript new-operator var instanceof

var a = 10
var b = new Number(10)

console.log(a instanceof Number)
console.log(b instanceof Number)

任何人都可以让我知道上述两个声明和a和b的定义之间有什么区别。

4 个答案:

答案 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可用于执行类型转换。

reference

理论上存在差异,但在实践中没有。当需要成为对象时,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

enter image description here

答案 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。为了完全理解它们,你需要在编程中查看对象。