我在JavaScript数组上读过的大多数教程(包括w3schools和devguru)都建议您可以通过使用var test = new Array(4);
语法将整数传递给Array构造函数来初始化具有一定长度的数组。
在我的js文件中广泛使用此语法后,我通过jsLint运行了其中一个文件,结果很糟糕:
错误:第1行第22个字符的问题:预期为')',而是显示为'4'。
var test = new Array(4);
第1行第23个字元的问题:预期为';' 而是看到')'。
var test = new Array(4);
第1行第23个字符处的问题:需要标识符,而看到了')'。
阅读完jsLint对其行为的解释之后,看起来jsLint并不真正喜欢new Array()
语法,而是[]
在声明数组时更喜欢。
所以我有几个问题:
首先,为什么?我使用new Array()
语法代替会冒任何风险吗?我应该注意浏览器的不兼容性吗?
其次,如果我切换到方括号语法,是否有任何方法可以声明一个数组并将其长度全部设置在一行上,或者我必须执行以下操作:
var test = [];
test.length = 4;
As explained above, using
new Array(size)
is somewhat dangerous. Instead of using it directly, place it inside an "array creator function". You can easily make sure that this function is bug-free and you avoid the danger of callingnew Array(size)
directly. Also, you can give it an optional default initial value. ThiscreateArray
function does exactly that: