{ const data = req.body; c-6ren">
gpt4 book ai didi

javascript - 当对象分配给变量时,变量的行为如何?

转载 作者:行者123 更新时间:2023-12-01 07:11:03 24 4
gpt4 key购买 nike

应用程序通过 post 方法从 HTML 表单获取一个对象,如下所示:

代码:

app.post("/foo", (req, res)=> {

const data = req.body;
const itemId = req.body.id;

console.log(data);
console.log(itemId);

});

console.log() 结果是:

{
brand: 'foo',
model: 'foo',
amount: '10',
id: '629f3149ffc8f9dcfa56e403'
}
629f3149ffc8f9dcfa56e403

在控制台上,整个对象和项目的值都完美显示。

现在,当我应用 deleteconst data 中删除 id propertyreq.body.id 分配给 itemId 之前:(position1)

app.post("/foo", (req, res)=> {

const data = req.body;
// position 1
delete data.id;

const itemId = req.body.id;


console.log(data);
console.log(itemId);

})

我得到 itemId未定义:

{
brand: 'foo',
model: 'foo',
amount: '10',

}
undefined

但是如果我在将 req.body.id 分配给 itemId 之后使用delete:(position2)

app.post("/foo", (req, res)=> {

const data = req.body;

const itemId = req.body.id;
// position 2
delete data.id;


console.log(data);
console.log(itemId);

})

我在控制台中获取了itemId

{
brand: 'foo',
model: 'foo',
amount: '10',
}
629f3149ffc8f9dcfa56e403

问题为什么和/或如何发生这种情况?

我接受对问题标题/或正文的任何​​编辑,以便任何人更好地理解。谢谢。

最佳答案

在 Javascript 赋值中,对象和值的处理方式不同。

datareq.body对象,并且在赋值之后

const data = req.body;

它们是同一个对象。该对象不会被复制,但会创建一个指向同一对象的新指针。

现在

const itemId = req.body.id;
delete data.id;

首先复制id的值到一个新变量中,然后删除原始变量( data.idreq.body.id 相同)。副本仍然存在。

delete data.id;
const itemId = req.body.id;

首先删除原来的id然后尝试复制它的值。但到那时,它就消失了。

关于javascript - 当对象分配给变量时,变量的行为如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58216508/

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