gpt4 book ai didi

javascript - 删除对象属性在删除操作之前生效

转载 作者:行者123 更新时间:2023-11-28 15:51:07 28 4
gpt4 key购买 nike

我有这个代码:

data["id"] = 0;                                                     
console.log(data); // first log
found["test"] = data;
delete data.id;
console.log(data); // second log

其中 data 和found 是之前创建的对象。

我的控制台打印两次没有“id”属性的数据对象。

如果我将删除替换为:data.id = '';,控制台会打印两次具有空 id 属性的数据对象。

此外,found["test"] 的对象没有 id(或 id = "",具体取决于我所在的实验)

有人可以帮我理解发生了什么吗?

最佳答案

console.log 正在欺骗你。变量data 不变。变量data 引用的对象就是正在发生变化的内容。当您单击对象时,您的日志将显示对象的状态,而不是在记录对象时显示。

并不是删除过早发生,而是您的浏览器控制台打开对象太晚了。

如果您插入debugger语句来暂停执行,您应该会看到您期望看到的内容。然后继续执行,该属性将如您所愿被删除。

data["id"] = 0;                                                     
console.log(data); // first log
debugger;
// inspect your object now

found["test"] = data;
delete data.id;
console.log(data); // second log
// inspect the object now, the property should be gone
<小时/>

O,您可以通过钻取对象来更改正在记录的内容:

data["id"] = 0;                                                     
console.log(data.id); // 0
found["test"] = data;
delete data.id;
console.log(data.id); // undefined

关于javascript - 删除对象属性在删除操作之前生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20575294/

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