gpt4 book ai didi

javascript - 为什么无法在 JavaScript 中将对象属性设置为空字符串?

转载 作者:行者123 更新时间:2023-11-28 19:23:56 25 4
gpt4 key购买 nike

我想将请求正文中的值传递到 paramsDict 对象中,我在其中定义了约束来测试参数。我不要求每个请求都发送所有可能的参数,而且,如果在客户端上删除了某个值,则可以将其作为空字符串发送。

所以我们像这样将值传递给字典

for ( p in paramsDict ) {
if ( container[p] ) {
paramsDict[p].value = container[p];
}
}

其中容器设置为 req.body(在 Node.js Express 中)。

container[p] = "" 的情况下,属性 paramsDict[p].value 永远不会被设置,即 typeof paramsDict[p]。 value 返回“undefined”(注意:在我尝试在此处分配它之前,它不存在于对象上)。这意味着添加一个额外的检查,我不想这样做:

if (typeof container[p] == "string" && container[p].length == 0){
paramsDict[p].value = "";
}

调查我发现 paramsDict[p].value = ""paramsDict[p].value = false 都分别将属性设置为空字符串和 false (我包含 false 因为空字符串在 JS 中是 falsey)。

当值为空字符串时,

typeof container[p] 返回"string",所以我很惊讶它没有将空字符串分配为值。

这是针对 JS 实现做出的决定还是一个错误?

最佳答案

即使在您关心的情况下(空字符串或 false),您对属性 [p] 的检查也将返回 false。您应该使用 if (container.hasOwnProperty(p)),而不是 if (container[p])

关于javascript - 为什么无法在 JavaScript 中将对象属性设置为空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28242793/

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