没区别,之所以代码示例中a
和b
值不一样,使用因为Array
构造函数对实参处理比较坑:
new Array(element0, element1[, ...[, elementN]])
new Array(arrayLength) // arrayLength 一个范围在 0 到 2^32-1 之间的整数
所以问题中代码示例可以视为:
function iner() {
// element0为arguments对象的数组,即长度为1
let a = new Array(arguments);
console.log(a);
}
iner(3);
// 长度为3的稀疏数组
let b = new Array(3);
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…