检查主体中参数是否存在的快速、正确的方法

lel*_*ood 6 node.js express

哪个是检查正文中是否存在参数的正确方法?

我正在使用,if(req.body.hasOwnProperty('myParam')){...}但我看到有人只是写,if(req.body.myParam){...}但如果参数的数值为 0,则第二个选项将返回 false,不是吗?

Guy*_*gev 9

对。

如果你想检查属性是否存在,那么 hasOwnProperty 就可以完成这项工作。

req.body.myParam对于任何错误,例如、、或0,使用将返回 false 。''falsenullundefined

还要注意点符号和 hasOwnProperty 方法没有相同的行为:

hasOwnProperty() 方法返回一个布尔值,指示对象是否将指定的属性作为它自己的属性(而不是继承它)。

所以它可能会令人困惑,例如,运行上面的代码片段:

var o = new Object();

if (o.toString) {
  console.log('Dot notation can be confusing, inherited property example : ', o.__proto__.toString);
}

if (o.hasOwnProperty('toString')) {
  // nope
} else {
  console.log("that's why the hasOwnProperty method can be preferred");
}
Run Code Online (Sandbox Code Playgroud)