gpt4 book ai didi

javascript - 神秘的for循环迭代

转载 作者:行者123 更新时间:2023-11-28 13:33:24 25 4
gpt4 key购买 nike

在下面的代码中,for循环从i = 1开始。为什么合并对象的name属性被正确设置?

function merge(root){
for ( var i = 1; i < arguments.length; i++ ){
for ( var key in arguments[i] ){
console.log(i); // returns 1 then 2 (not 0)
root[key] = arguments[i][key];
}
}
return root;
}

var merged = merge({name: "John"}, {city: "Boston"},{age: 13});
console.log( merged.name ); // "John" ?
console.log( merged.city ); // "Boston" - OK
console.log( merged.age ); // 13 - OK

如果我将循环设置为以 i = 2 开头,merged.city 将返回 undefined (如预期),而 merged .name 仍然返回“John”。

function merge(root){
for ( var i = 2; i < arguments.length; i++ ){
for ( var key in arguments[i] ){
console.log(i); // returns 2
root[key] = arguments[i][key];
}
}
return root;
}

var merged = merge({name: "John"}, {city: "Boston"},{age: 13});
console.log( merged.name ); // "John" - ?
console.log( merged.city ); // undefined - OK
console.log( merged.age ); // 13 - OK

这怎么可能?

最佳答案

参数root引用对象{name: "John"}。这也是arguments[0]。这就是为什么我们跳过它并从 arguments[1] 开始 - 所有后续参数都会合并到其中。

关于javascript - 神秘的for循环迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com