【发布时间】:2016-07-23 07:24:31
【问题描述】:
我有一个带有两个处理函数参数的简单循环的函数:
var getArgs=function(){
var keys = Object.keys(arguments);
for(var argKey in arguments){
console.log({argKey:argKey, argument:arguments[argKey]});
}
keys.forEach(function(argKey){
console.log({argKey:argKey, argument:arguments[argKey]});
});
};
...及其调用:
getArgs(5,3,2,11,15,7,-25);
似乎他们做的一样,所以输出也应该是一样的,但事实并非如此。 第一个工作相当可预测。输出是:
{ argKey: '0', argument: 5 }
{ argKey: '1', argument: 3 }
{ argKey: '2', argument: 2 }
{ argKey: '3', argument: 11 }
{ argKey: '4', argument: 15 }
{ argKey: '5', argument: 7 }
{ argKey: '6', argument: -25 }
但是第二个行为出乎意料:
{ argKey: '0', argument: '0' }
{ argKey: '1', argument: 1 }
{ argKey: '2', argument: [ '0', '1', '2', '3', '4', '5', '6' ] }
{ argKey: '3', argument: undefined }
{ argKey: '4', argument: undefined }
{ argKey: '5', argument: undefined }
{ argKey: '6', argument: undefined }
为什么?
【问题讨论】:
标签: javascript object for-loop foreach arguments