JavaScript中定义数组的两种主要方式(new Array()和[]方式)
- new Array()
①可以用像JAVA的那种写法的方式定义,如
var arr = new Array()
这样定义了一个空数组
②可以填写一个数字作为构造时的参数,比如
var arr = new Array(5)
在控制台可以看见这个数组的内容是
[undefined × 5]
这是一个"稀疏数组",通过直接改变数组length属性得到的元素数量少于数组的length的数组。
这种数组可以用
for(var i=0;i<arr.length;i++){
}
这种方式遍历,无法用
for(var e in arr){
}
的方式和
arr.forEach(function(e,i){
})
的方式遍历,可能会带来一些问题,应该避免稀疏数组的创建,所以不要使用
new Array(5)
这种创建方式,也不要直接改变数组的length属性。
③也可以用
var arr = new Array(1,2,3)
这种方式定义一个正常的数组
-
[]
构造器的方式定义数组了解了解就行,平时应该避免使用。
尽量使用中括号的方式定义数组,如
var arr=[1,2,3]
用这种方式可以得到一个正常的一个单位的数组,而不是所谓的“稀疏数组”
var arr=[1]
应该用哪种方式
多于一个初始元素时,2种方式定义的效果完全一样。
中括号方式定义有以下好处
程序更短,更易读;
初始元素为1个时也能正常定义。
所以大部分情况下应该使用中括号方式定义数组。
new Array(length)这种方式在某些特殊场合可以用到,比如可以很简洁的用一行得到一个0~99的范围的数组:
new Array(100).fill().map((e,i)=>i)
如果不用new Array(length)这种方式,程序就会更长一些。
var arr = [];
for(var i=0;i<100;i++){
arr.push(i);
}
长一些倒没什么,但更关键的是这样它就不是表达式了,而变成语句,在某些需要用表达式的场合会更不方便。