JSLint的是給我這個錯誤:什麼是JavaScript中的數組文字符號以及何時使用它?
Problem at line 11 character 33: Use the array literal notation [].
var myArray = new Array();
什麼是數組的文字符號和它爲什麼要我用它代替?
它顯示在這裏,new Array();
應該可以正常工作......有什麼我失蹤了嗎?
JSLint的是給我這個錯誤:什麼是JavaScript中的數組文字符號以及何時使用它?
Problem at line 11 character 33: Use the array literal notation [].
var myArray = new Array();
什麼是數組的文字符號和它爲什麼要我用它代替?
它顯示在這裏,new Array();
應該可以正常工作......有什麼我失蹤了嗎?
數組文字符號是使用空括號定義新數組的地方。在你的例子中:
var myArray = [];
這是定義數組的「新」方式,我認爲它更短/更乾淨。
下面的例子說明它們之間的區別:
var a = [], // these are the same
b = new Array(), // a and b are arrays with length 0
c = ['foo', 'bar'], // these are the same
d = new Array('foo', 'bar'), // c and d are arrays with 2 strings
// these are different:
e = [3], // e.length == 1, e[0] == 3
f = new Array(3); // f.length == 3, f[0] == undefined
Reference: What’s the difference between 「Array()」 and 「[]」 while declaring a JavaScript array?
參見:What’s wrong with var x = new Array();
除了從克羅克福德的說法,我認爲這也是由於這樣的事實,其他的語言有碰巧使用相同語法的相似數據結構;例如,Python has lists and dictionaries;請參閱以下示例:
// this is a Python list
a = [66.25, 333, 333, 1, 1234.5]
// this is a Python dictionary
tel = {'jack': 4098, 'sape': 4139}
Python是否也在語法上正確嗎? (是的,結尾的分號不見了,但這些對於Javascript來說都不是必需的)
因此,通過在編程中重用常用範例,我們可以節省每個人重新學習不應該有的東西。
除了克羅克福德的論點,jsPerf說它更快。 http://jsperf.com/new-vs-literal-array-declaration
看了@ecMode jsperf之後,我做了一些進一步的測試。
當使用推到添加到陣列新陣列()是相當快的鉻:
http://jsperf.com/new-vs-literal-array-declaration/2
使用索引添加稍微爲[]快。
這與以下內容類似,但不完全相同:http://stackoverflow.com/questions/931872/whats-the-difference-between-array-and-while-declaring-a-javascript-arr/ – Borgar 2009-07-07 22:41:40
[var x = new Array();]的錯誤[](http://stackoverflow.com/questions/885156/whats-wrong-with-var-x-new-array) – Bergi 2012-06-27 18:07:15
也總是使用文字當你可以因爲Array構造函數(new Array())不總是正常工作。例如如果有一個值是一個數字。 > new Array(3,11,8)[3,11,8]> new Array(3)[,,,]> new Array(3.1)RangeError:無效數組長度 – 2017-12-20 14:59:34