我在每个页面上运行一个 UI 组件,并且在其中一个页面上,有一个附加功能链接到它。 UI 组件有一个名为 MyValue
的 bool 值,额外功能有一个名为 ExtraObject
的对象,其属性之一是名为 ExtraBool
的 bool 值。
我想测试 MyValue 是否为 true 以及 ExtraObject.ExtraBool 是否为 false,但前提是 ExtraObject 存在。这样,如果我所在的页面没有 ExtraObject,就不会出现错误。
我尝试过这个:
if (MyValue === true &&
(typeof ExtraObject === undefined || ExtraObject.ExtraBool === false)) {...}
我应该如何重写这个?
目前,我不断收到“ExtraObject 未定义错误”。
谢谢。
最佳答案
应该是:
typeof ExtraObject === "undefined"
typeof
以字符串形式返回表达式的类型,因此您需要将名称“undefined”
与结果进行比较。
在我看来,你的条件有点太明确了。我会选择更短的东西:
if (MyValue && !(ExtraObject && ExtraObject.ExtraBool)) {...}
如果您使用自己的 GUI 代码进行通信,则可以假设类型符合预期。 JavaScript 中的类型检查相当麻烦,因此如果您知道自己正在处理什么,就可以不那么明确。 (但这不适用于用户输入。永远不要相信用户输入。)
关于带有多个if的javascript if条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11004730/