使用字面量定义和使用构造函数定义的区别
- 使用字面量定义数组,字面上是什么样就是什么的
- 使用构造函数定义数组,会根据不同情况做处理
- 只有一个参数,且参数为数字类型:表示数组长度 返回特定长度的空数组,数字必须符合数组长度的要求,例如不能是小数,不能是负数等。
- 除此之外,会将参数作为数组的成员,返回这个数组。
使用字面量定义数组
定义啥就是啥,没啥解释
var list = [];
console.log(list)//[0]
var list = [1];
console.log(list)//[1]
var list = [1,2,3];
console.log(list)//[1,2,3]
使用构造函数定义数组
没有参数
var list = Array();
console.log(list);//[]
只有一个参数 且 参数是number类型
使用构造函数定义
var list = Array(1);
console.log(list)//[ <1 empty item> ]
var list = Array(3);
console.log(list)//[ <3 empty items> ]
var list = Array(3.5);
console.log(list);//Invalid array length
var list = Array(-1);
console.log(list);//Invalid array length
其他情况
抛去无参数的情况, 使用构造函数,传的参数都会作为数组成员返回:
var list = Array(false);
console.log(list);//[ false ]
var list = Array([]);
console.log(list);//[ [] ]
var list = Array([1]);
console.log(list);//[ [ 1 ] ]
var list = Array(1,2,3);
console.log(list);//[ 1, 2, 3 ]
由此可知:
- 构造函数没有参数时表示定义一个空数组 等同于 [];
- 但是当有一个数字类型的参数时,不是在确定数组成员,而是在确定数组长度,这一点是 字面量定义完全不同的。
- 使用字面量定义数组,数组是什么就是什么,非常明确。
- 使用构造函数定义,在只有一个参数的时候,数组可能不是你想要的样子。甚至会有报错的风险。
因此建议,一直使用字面量定义数组。