我正在使用 ESLint 检查我的 javascript 代码,我发现了“意外使用未定义”的警告
声明是
if (data.items === undefined) {...}
Data.items 通常等于一个 JSON 对象,但在某些情况下它可能只是未定义,如果是这种情况我想采取单独的操作。
要摆脱这个警告,使用是否合适
if (data.items === false) {...}
在这种情况下,这两个陈述是否等价?
最佳答案
不,它们不等价。要使它们等价,undefined === false
必须为 true
。但是,===
执行严格 相等比较,这意味着不同数据类型的值永远不会相等。 false
是Boolean 数据类型的值,undefined
是Undefined 数据类型的值。因此 undefined === true
是 false
。
如果你想显式地测试值undefined
而不引用undefined
,你可以使用typeof
:
if (typeof data.items === 'undefined')
如果要测试属性 items
的存在,可以使用 in
运算符或 .hasOwnPropery
:
if (!data.hasOwnProperty('items'))
if (!('items' in data))
如果知道 data.items
的可能值是 undefined
或一个对象,您可以简单地让 JavaScript 的类型转换为您工作并使用
if (!data.items)
如果 data.items
是一个对象(包括数组)!data.items
将为 false
。如果它是 undefined
,它将是 true
。
关于javascript - 检查 undefined variable 与错误变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35487226/