有条件地检查一个有时可能未定义的值是否不等于另一个值?
Conditionally check if a value that may at times be undefined is not equal to another value?
var query = [], name = 'name';
if (body.displayName !== req.user.displayName) {
query.push({
displayName: name
});
}
这行得通,但我 运行 进入了 req.user.displayName === undefined
.
的用例
直觉上,似乎 undefined
也不等于 body.displayName
,但当然会抛出错误:
"cannot read property of undefined"
是否有条件地检查同一个 if 语句中的值是否为 undefined
且不等于 body.displayName
,或者是将其嵌套在另一个 if 语句中的唯一方法:
if (req.user.displayName !== undefined) { }
该错误不可能来自 req.user.displayName
成为 undefined
。它来自试图读取未定义的东西的 属性,这意味着罪魁祸首是 body
、req
或 req.user
是 undefined
。
这是来自 node.js 的文字记录:
> 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
完全没有问题,即使 req.user.displayName
是 undefined
。
您不需要更改 if
测试;您需要找出为什么其中一个对象是 undefined
.
所以弄清楚什么是未定义的
console.log(req);
console.log(req.user);
我假设错误是未设置用户。如果那是真的,那么你就没有问题。如果它应该有一个用户而不是你有一个错误。
但是基本检查将使用真实检查来确保对象在那里。它可以是以下之一,具体取决于未定义的内容。
if (req && req.user && req.user.displayName !== body.displayName)
或
if (req.user && req.user.displayName !== body.displayName)
或者如果 body
是 undefined
,则您需要以其他方式进行检查。
var query = [], name = 'name';
if (body.displayName !== req.user.displayName) {
query.push({
displayName: name
});
}
这行得通,但我 运行 进入了 req.user.displayName === undefined
.
直觉上,似乎 undefined
也不等于 body.displayName
,但当然会抛出错误:
"cannot read property of undefined"
是否有条件地检查同一个 if 语句中的值是否为 undefined
且不等于 body.displayName
,或者是将其嵌套在另一个 if 语句中的唯一方法:
if (req.user.displayName !== undefined) { }
该错误不可能来自 req.user.displayName
成为 undefined
。它来自试图读取未定义的东西的 属性,这意味着罪魁祸首是 body
、req
或 req.user
是 undefined
。
这是来自 node.js 的文字记录:
> 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
完全没有问题,即使 req.user.displayName
是 undefined
。
您不需要更改 if
测试;您需要找出为什么其中一个对象是 undefined
.
所以弄清楚什么是未定义的
console.log(req);
console.log(req.user);
我假设错误是未设置用户。如果那是真的,那么你就没有问题。如果它应该有一个用户而不是你有一个错误。
但是基本检查将使用真实检查来确保对象在那里。它可以是以下之一,具体取决于未定义的内容。
if (req && req.user && req.user.displayName !== body.displayName)
或
if (req.user && req.user.displayName !== body.displayName)
或者如果 body
是 undefined
,则您需要以其他方式进行检查。