Javascript 有条件地检查有时可能未定义的值是否不等于另一个值?

Javascript 有条件地检查有时可能未定义的值是否不等于另一个值?,javascript,conditional,Javascript,Conditional,这是可行的,但我遇到了一个用例,req.user.displayName===未定义的 直观地看,它似乎未定义也不等于body.displayName,但它当然会抛出一个错误: “无法读取未定义的属性” 是否有条件检查该值是否为undefined,是否也不等于同一if语句中的body.displayName,或者是将其嵌套到另一if语句中的唯一方法: var query = [], name = 'name'; if (body.displayName !== req.user.display

这是可行的,但我遇到了一个用例,
req.user.displayName===未定义的

直观地看,它似乎
未定义
也不等于
body.displayName
,但它当然会抛出一个错误:

“无法读取未定义的属性”

是否有条件检查该值是否为
undefined
,是否也不等于同一if语句中的
body.displayName
,或者是将其嵌套到另一if语句中的唯一方法:

var query = [], name = 'name';

if (body.displayName !== req.user.displayName) {
    query.push({
        displayName: name
    });
}

该错误不能来自
req.user.displayName
未定义的
。它来自于试图读取未定义的内容的属性,这意味着罪魁祸首是
body
req
req。user
未定义的

下面是node.js的一份记录:

if (req.user.displayName !== undefined) { }
没有任何问题,即使
req.user.displayName
未定义的


如果
测试,则无需更改
;您需要跟踪为什么这些其他对象中有一个是未定义的

,然后找出哪些是未定义的

> body = {displayName: "foo"}
{ displayName: 'foo' }
> req = {user: {displayName: undefined}}
{ user: { displayName: undefined } }
> req.user
{ displayName: undefined }
> req.user.displayName
undefined
> body.displayName !== req.user.displayName
true
我假设错误在于未设置用户。如果这是真的,那么你就没有问题了。如果它应该有一个用户,那么你就有一个bug

但是基本检查将使用真实检查来确保对象在那里。根据未定义的内容,它可以是以下任一项

console.log(req);
console.log(req.user);


或者,如果
正文
未定义的
,则需要以另一种方式进行检查。

您确定
未定义的
请求用户显示名称
?考虑到错误,似乎更有可能是
req
req.user
(或者
body
)未定义
if (req && req.user && req.user.displayName !== body.displayName)
if (req.user && req.user.displayName !== body.displayName)