gpt4 book ai didi

javascript - 与 FALSE 的比较等同于取反值。这是 ReSharper 错误吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:43:29 26 4
gpt4 key购买 nike

我正在使用 ReSharper 9 及其 TypeScript 功能。我正在写 typescript 代码。我有一个这样的界面:

interface Test {
A?: boolean;
...
}

然后我像这样编写一个if 语句,以测试成员A 是否存在并且是否正好等于false。 (又名:如果它不存在,我想将其视为真实。)

if (myObj.A === false) {
...
}

然后 ReSharper 提示我与 False 的比较等同于否定值,如果我接受修复,它就变成了

if (!myObj.A) {
...
}

这显然不等价,因为如果 A 未定义,则为真。

我错过了什么?它在运行时真的是等价的吗?

最佳答案

正如您所说,这两个比较并不等同:

var myObj = {A: false};
myObj.A === false //true;
myObj = {};
myObj.A === false //false;
!myObj.A //true (not what you want)

因此,ReSharper 提出的建议不正确。

关于javascript - 与 FALSE 的比较等同于取反值。这是 ReSharper 错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28169882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com