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

标签 javascript undefined string

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

相关文章:

javascript - str_replace 来自 Ajax 调用数据的 js 内部

javascript - 原始 HTML 上的正则表达式

javascript - getElementsByClassName[i] 返回未定义

ruby-on-rails - Ruby on Rails- :symbols, @iVars 和 "strings"- 天啊!

javascript - 通过ajax和jquery上传文件

javascript - react Bootstrap 模式不显示

javascript - 遇到未捕获的类型错误 : Cannot read property of undefined

php - 如何解决数组中不存在的索引?

java - 为什么初始化字符串后得到 null?

string - 包含集合中出现次数最多的字符串的最短字符串