NodeJS hasOwnProperty的参数中可以使用逻辑运算符吗?

a14dhokn  于 2023-02-08  发布在  Node.js
关注(0)|答案(1)|浏览(141)

我想在从process.env阅读一些值之前添加一个未定义的检查。
现在假设我正在确保local.settings.json中存在两个名为"firstConfig""secondConfig"的属性,我随意地写下了如下代码:

if(!Object.prototype.hasOwnProperty.call(process.env, "firstConfig" && "secondConfig")) {
    throw new Error("Something Wrong")
}
// No exception thrown

为了证明这段代码,我删除了local.settings.json中的"secondConfig"

if(!Object.prototype.hasOwnProperty.call(process.env, "firstConfig" && "secondConfig")) {
    throw new Error("Something Wrong")
}
// Exception: Something Wrong

所以,看起来这段代码工作正常,但我找不到任何文档来解释它。
如果我想同时检查多个属性,在这里使用逻辑运算符是否有效?

f0ofjuux

f0ofjuux1#

Object.property.hasOwnProperty.call(process.env, "firstConfig" && "secondConfig")表达式的计算结果始终为true,因为"secondConfig"是一个真实值,并且"firstConfig" && "secondConfig"将返回"secondConfig"
若要正确检查是否存在多个属性,需要分别检查每个属性:

if (!Object.prototype.hasOwnProperty.call(process.env, "firstConfig") || !Object.prototype.hasOwnProperty.call(process.env, "secondConfig")) {
    throw new Error("Something Wrong")
}

这样,只有当firstConfig或secondConfig不存在于process.env中时,才会抛出错误。

相关问题