var a = 10
var b = new Number(10)
console.log(a instanceof Number)
console.log(b instanceof Number)
任何人都可以让我知道上面两个声明和a和b的定义有什么区别。Var和新的区别
var a = 10
var b = new Number(10)
console.log(a instanceof Number)
console.log(b instanceof Number)
任何人都可以让我知道上面两个声明和a和b的定义有什么区别。Var和新的区别
第一个声明就像原始数据类型。
虽然在您使用new Number(10)
的第二个声明中,它被认为是一个包装函数或class
来将您的编号保存在object
中。
要看到实际的区别,现在检查的实际类型的变量,在这两种情况下:
console.log(typeof(a)) //should give you "number"
console.log(typeof(b)) //should give you "object"
的var
关键字是可变的只是一个简单的声明。 new
关键字用于生成某种类型的新的object
。为了充分理解它们,您需要在编程中查看对象。
明确指出您正在创建一个新号码,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);
希望这有助于! :)
很确定它创建了一个数字原始值...其余的似乎是正确的。 – Shadow
哎呀,我的部分略有疏忽:P修正:) –
感谢兄弟的澄清,但是当我们声明var a = 10时,我们发现了一些针对变量但没有构造函数的方法。所以你可以解释一下,因为在JavaScript中没有整数概念,并且JavaScript数字总是以双精度浮点数的形式存储。 –
第一个创建一个原语。另一个对象。
为Number对象的主要用途是:
1)如果参数不能被转换成一个数字,它返回NaN。
2)在非构造函数上下文中(即没有new运算符),Number可用于执行类型转换。
在理论上是有区别的,但在实践中没有。当JavaScript需要成为一个对象时,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
也许这篇文章可以帮助解释[**新的Number()**(https://stackoverflow.com/questions/2381399/what - 这是新的数字和数字在JavaScript之间的差异)其他我相信会明白你的理解'新数字()' – NewToJS
可能重复[字符串之间有什么区别JavaScript中的文字和String对象?](https:// stackoverflow。com/questions/17256182/what-is-the-difference-between-string-literals-and-string-objects-in-javascript) – Chang
题目很差,'a'和'b'都是'var' –