2014-11-22 40 views
0

似乎有很多不同的方法可以在JavaScript中做同樣的事情。在JavaScript中使用「新」關鍵字來區別數字和輸入數字有什麼區別?我看沒有區別:var num = 30和var num = new Number(30)在JavaScript中有什麼區別?

var num = 30; 

var num = new Number(30); 

這是相同的處理字符串(和數組):

var str = "hello"; 

var str = new String("hello"); 

爲什麼會有人使用一種方法比其他?它們對我來說看起來是一樣的,而且它只是更多地打字。

+0

我幾乎總是使用第一個(原始版本)。 – soktinpk 2014-11-22 22:50:34

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number Number對象的主要用途是:1)如果參數不能轉換爲數字,它會返回NaN的。 2)在非構造函數上下文中(即沒有新運算符),Number可以用於執行類型轉換。' – Cheery 2014-11-22 22:51:01

回答

5

第一個創建一個原語。另一個對象。

理論上有差異,但在實踐中沒有。當JavaScript需要成爲一個對象時,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 
+0

請注意'new Number(42)== new Number(42)'爲false – 2015-03-30 09:05:29

相關問題