【发布时间】:2021-07-06 14:35:12
【问题描述】:
function test(num0, num1) {
console.log(arguments.length); // output: 1
arguments[1] = 20;
console.log(arguments.length); // output: 1
}
test(8);
但是当对普通数组执行相同的操作时,数组的长度会发生变化-
var arr = [2];
console.log(arr.length); // output: 1
arr[1] = 5;
console.log(arr.length); // output: 2
那么为什么arguments[]数组的长度在为新索引赋值后没有改变?
【问题讨论】:
-
arguments是一个数组like 对象。比[8]多思考{length: 1, 0: 8}。 -
arguments不是数组,而是类似数组。任何适用于数组的东西都不适用于arguments。 -
@jonrsharpe 所以如果我将此对象转换为数组,那么该数组的索引 0 应该存储长度的值?
-
否;如果将其转换为数组,则第 0 个索引处的值将是第一个参数 8。
-
@NinaScholz 但 arguments.length 返回一个适用于数组但不适用于对象的值。
标签: javascript arrays function arguments