我在很多教程看,目前的最佳實踐,以創建一個新的JavaScript數組是使用JavaScript數組最佳實踐使用[]而不是新陣列?
var arr = []
代替
var arr = new Array()
有什麼背後的原因何在呢?
我在很多教程看,目前的最佳實踐,以創建一個新的JavaScript數組是使用JavaScript數組最佳實踐使用[]而不是新陣列?
var arr = []
代替
var arr = new Array()
有什麼背後的原因何在呢?
這可能是因爲Array對象可以在JavaScript中被覆蓋,但是數組文字符號不能。見this answer爲例
還要注意的是這樣做的:
var x = [5];
比做不同:
var x = new Array(5);
前者創建與5的值一個元素之後的初始化數組用5個未定義元素創建一個數組。
而且,爲了使它更有趣,'new Array(1,2)'等於'[1,2]'。 – 2010-05-31 15:23:14
這是打字少,這在我的書總是贏:-)
一旦我固定在我們的頁面中的一個奇怪的錯誤。該頁面希望創建一個數字數據庫鍵列表作爲一個Javascript數組。鍵總是大整數(高位始終設置爲指示符)。原代碼看起來像:
var ids = new Array(${the.list});
那麼,猜猜當列表中只有一個值時發生了什麼?
var ids = new Array(200010123);
這意味着,「創建一個數組並初始化它,以便有2億空條目」。
通常,數組文字(var a = [1,2,3]或a = [])是要走的路。
但是偶爾需要一個數組,其長度本身就是數組的定義特徵。
變種A =陣列(N)將(使用文字)需要兩個以下詞組
變種A = [];則爲a.length = N;
在任何情況下,您都不需要使用Array構造函數的'new'運算符, 並不像您需要使用新的Date對象的'new'那樣。
要在不長
var arr = [];
創建陣列要與長度更動態
var arr;
(arr = []).length = 10; // 10 is array length
要創建具有長數組動力較小
var arr = [];
arr.length = 10;
這取決於每個實施雖然創建陣列。至少在過去[]中,在一些JS引擎中使用了Array構造函數(iirc通過覆蓋數組構造函數,對於能夠爲JSONP請求捕獲數組創建的腳本模糊不清)。 – 2010-05-31 15:18:33
@reko_t - 這是非常真實的。我知道在Firefox的數組文字不使用數組構造函數,不知道其他人(目前沒有辦法檢查,有人可以確認嗎?) – 2010-05-31 15:22:33
有人能夠修復鏈接嗎? iPhone編輯比較棘手:) – 2010-05-31 15:23:27