const obj = {aa: {}, bb: {}}; for(let i=0;i<10;i++) {if (i === 0) {obj.aa.uv=i} else if (i === 1) {obj.aa.uv11=i} else if (i === 2) {obj.aa.uv22=i} console.log(obj)}
因为console.log()输出对象或数组时是在控制台显示一个对象或数组的引用。
在用console.log()输出数组或对象时,对象(数组)的属性是折叠不显示的。
如果你在console.log()输出之后改变了对象(数组)的属性,当你点击三角展开属性时,会重新读取对象(数组)当前的属性,也就是显示出来的是你点击三角展开时的属性,而不是执行console.log()时的属性。
解决方法是用console.log(JSON.stringify(obj));以字符串方式输出
因为引用是一样的
你要在循环里new Object()
for(let i=0;i<10;i++) {const obj = {aa: {}, bb: {}};if (i === 0) {obj.aa.uv=i} else if (i === 1) {obj.aa.uv11=i} else if (i === 2) {obj.aa.uv22=i} console.log(obj)}
因为引用是一样的
你要在循环里new Object()
for(let i=0;i<10;i++) {const obj = {aa: {}, bb: {}};if (i === 0) {obj.aa.uv=i} else if (i === 1) {obj.aa.uv11=i} else if (i === 2) {obj.aa.uv22=i} console.log(obj)}
// 创建一个对象
const obj = { aa: {}, bb: {} };
// 循环10次
for (let i = 0; i < 10; i++) {
//第一次 obj = { aa: {}, bb: {} }
//第二次 obj = { aa: {uv:0,uv11:1,uv11:2}, bb: {} }
//第N+1 obj = { aa: {uv:0,uv11:1,uv11:2}, bb: {} }
if (i === 0) {
obj.aa.uv = i;
// obj = { aa: {uv:0}, bb: {} }
} else if (i === 1) {
obj.aa.uv11 = i;
// obj = { aa: {uv:0,uv11:1}, bb: {} }
} else if (i === 2) {
obj.aa.uv22 = i;
// obj = { aa: {uv:0,uv11:1,uv11:2}, bb: {} }
}
console.log(obj);
}
如果对您有帮助,希望你可以点赞 + 采纳,这是对我最大的鼓励