我读过的关于JavaScript中数组的大多数教程(包括w3schools和devguru)都建议,可以通过使用var test=new array(4)将整数传递给数组构造函数来初始化具有特定长度的数组语法
在我的js文件中大量使用了这种语法之后,我通过jsLint运行了其中一个文件,结果它崩溃了:
错误:第1行出现问题(字符22:应为“)”,而看到的是“4”。
var测试=新阵列(4)
第1行的问题字符23:应为“;”而是看到“)”。
var测试=新阵列(4)
第1行字符23处出现问题:应为标识符,而应为“')”
在阅读了jsLint对其行为的解释之后,jsLint似乎并不真正喜欢new Array()语法,而是在声明数组时更喜欢[]
所以我有几个问题:
首先,为什么?使用new Array()语法是否有风险?是否存在我应该注意的浏览器不兼容
第二,如果我切换到方括号语法,有没有办法在一行上声明一个数组并设置它的长度,或者我必须这样做:
var测试=[];
试验长度=4;
-
Array(5)为您提供一个长度为5但没有值的数组,因此您无法对其进行迭代 -
Array.apply(null,Array(5)).map(function(){})提供一个长度为5且未定义为值的数组,现在可以对其进行迭代 -
Array.apply(null,Array(5)).map(函数(x,i){return i;})提供一个长度为5、值为0,1,2,3,4的数组 -
Array(5)。forEach(警报)不执行任何操作,Array.apply(null,Array(5))。forEach(警报)提供5个警报 -
ES6为我们提供了Array.from因此现在您也可以使用Array.from(Array(5)).forEach(alert) -
如果您想用某个值初始化,最好知道这些值…
Array.from('abcde'),Array.from('x')。重复(5))
或者Array.from({length:5},(v,i)=>;i)//给Output[0,1,2,3,4]