检查身体中是否存在参数的正确方法是什么?
我正在使用if(req.body.hasOwnProperty('myParam')){...}
,但我看到有人只是写if(req.body.myParam){...}
但如果param的数值为0,则第二个选项将返回false,不是吗?
答案 0 :(得分:4)
右。
如果你想检查属性是否存在,那么hasOwnProperty
将完成这项工作。
使用req.body.myParam
会因任何错误而返回false,例如0
,''
,false
,null
或undefined
。
另请注意,点符号和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");
}