我想将请求正文中的值传递到 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/