LBa*_*ish 6 javascript angularjs eslint
我正在使用 ESLint 检查我的 javascript 代码,发现一条警告“意外使用未定义”
声明是
if (data.items === undefined) {...}
Run Code Online (Sandbox Code Playgroud)
Data.items 通常等于 JSON 对象,但在某些情况下它可能只是未定义,如果是这种情况,我想采取单独的操作。
要消除此警告,是否适合使用
if (data.items === false) {...}
Run Code Online (Sandbox Code Playgroud)
在这种情况下这两种说法是否等价?
不,它们并不等同。为了使它们相等,undefined === false必须是true。但是,===执行严格的相等比较,这意味着不同数据类型的值永远不会相等。是布尔false数据类型的值,是未定义数据类型的值。因此是.undefinedundefined === truefalse
undefined如果您想在不引用的情况下显式测试该值undefined,您可以使用typeof:
if (typeof data.items === 'undefined')
Run Code Online (Sandbox Code Playgroud)
如果要测试该属性是否存在items,可以使用in运算符 或.hasOwnPropery:
if (!data.hasOwnProperty('items'))
if (!('items' in data))
Run Code Online (Sandbox Code Playgroud)
如果知道 的可能值data.items是undefined或 一个对象,您可以简单地让 JavaScript 的类型转换为您工作并使用
if (!data.items)
Run Code Online (Sandbox Code Playgroud)
如果data.items是一个对象(包括数组),!data.items则将为false。如果是的话undefined,那就会了true。
| 归档时间: |
|
| 查看次数: |
6632 次 |
| 最近记录: |