有什麼區別(如果有的話)的CoffeeScript(或JavaScript用於該目的CoffeeScript的「陣列()」與「新的Array()」
和 之間x = Array()
x = new Array()
)?我應該使用哪一個?
有什麼區別(如果有的話)的CoffeeScript(或JavaScript用於該目的CoffeeScript的「陣列()」與「新的Array()」
和 之間x = Array()
x = new Array()
)?我應該使用哪一個?
的spec說:
當
Array
被稱爲函數,而不是作爲一個構造函數,它創建和初始化一個新的Array對象。因此函數調用Array(…)
等價於具有相同參數的對象創建表達式new Array(…)
。
我相信兩者都是等價的。然而,在JavaScript中至少,你應該總是用文字語法:
x = []
但基於在我的瀏覽器的一些測試,Array(1, 2, 3)
給出了相同的結果new Array(1, 2, 3)
,並用相同和Array(15)
new Array(15)
。或者只是簡單的new Array()
。
正確,有完全相同的。 – Raynos
您應該在JavaScript和CoffeeScript中使用'x = []',除非您需要預先設定數組的大小。 –
mu是完全正確的:使用'arr = new Array(n)'(其中'n'是一個數字)當且僅當您正在做一些性能密集型的事情時,你會知道該數組將有多大,所以所需的內存一次全部分配(原則上)。 –
您應該使用文字[]
。理由概述here。使用Array()
構造可能是不明確的,因爲它可以接受元素的length
或列表:
new Array(5) // []
new Array('5') // ['5']
[5] // [5]
['5'] // ['5']
可以使用Array
沒有new
操作的原因是,在內部它與構造一個共同的伎倆:
function Thing(){
if (!(this instanceof Thing)){
return new Thing()
}
// ... define object
}
也就是說,如果您撥打Thing()
,它會爲您撥打new Thing()
。
你可能會發現這個有趣的:http://stackoverflow.com/questions/383402/is-javascript-s-new-keyword-considered-harmful – nickd