javascript - 检查 undefined variable 与错误变量

标签 javascript angularjs eslint

我正在使用 ESLint 检查我的 javascript 代码,我发现了“意外使用未定义”的警告

声明是

if (data.items === undefined) {...}

Data.items 通常等于一个 JSON 对象,但在某些情况下它可能只是未定义,如果是这种情况我想采取单独的操作。

要摆脱这个警告,使用是否合适

if (data.items === false) {...}

在这种情况下,这两个陈述是否等价?

最佳答案

不,它们不等价。要使它们等价,undefined === false 必须为 true。但是,=== 执行严格 相等比较,这意味着不同数据类型的值永远不会相等。 falseBoolean 数据类型的值,undefinedUndefined 数据类型的值。因此 undefined === truefalse


如果你想显式地测试值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/

相关文章:

javascript - 当我尝试查询 connectedCallback 中的子元素时,我得到一个空的节点列表

javascript - 刷新浏览器时 sessionStorage 消失了 - Javascript

angularjs - 将响应下载为 excel 文件

javascript - Eslint - 箭头主体周围出现意外的 block 语句

java - 将 JavaScript 与 Java 后端集成

javascript - window.devicePixelRatio 在 IE 10 Mobile 中不起作用?

javascript - 在移动设备上更改基于滚动的淡入淡出?

javascript - 获取数据:图片/png;base64,{{图片}} net::ERR_INVALID_URL

gulp - Eslint --fix 抑制错误但实际上并没有改变文件

typescript - 在 <script setup> 中出现不当警告时如何正确配置 ESLint?