javascript - JavaScript 中 var num=30 和 var num=new Number(30) 有什么区别?

标签 javascript syntax

在 JavaScript 中似乎有很多不同的方法可以做同样的事情。在 JavaScript 中使用“new”关键字表示数字和仅输入数字有什么区别吗?我认为两者没有区别:

var num = 30;

var num = new Number(30);

字符串(和数组)也是如此:

var str = "hello";

var str = new String("hello");

为什么有人会使用一种方法而不是另一种方法?它们对我来说似乎是一样的,而且只是多打字而已。

最佳答案

第一个创建一个原语。另一个是对象。

理论上有区别,但实际上没有区别。当需要成为对象时,JavaScript 引擎会自动将原语装箱为对象。

var myPrimitiveNumber = 42;
// calling .toFixed will 'box' the primitive into a number object,
// run the method and then 'unbox' it back to a primitive
console.log( myPrimitiveNumber.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

关于javascript - JavaScript 中 var num=30 和 var num=new Number(30) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27083391/

相关文章:

javascript - 使用 <button> 标签选择性提交表单不起作用

javascript - 为什么我的input type=file 没有加载文件信息?

list - 获取对 commonLISP 中函数的 undefined reference

syntax - 在yaml中写#(在字符串中)

javascript - 获取具有相同类的div的所有内部文本

Javascript 从数组中获取随机变量,但每个变量只有一次

vim - 什么 vim 模式匹配以点结尾的数字?

c++ - 语法说明

javascript - 为什么在内容容器外单击时灯箱不关闭

c - C程序初始化中反斜杠有什么用?