gpt4 book ai didi

javascript - JavaScript 中没有额外的 boolean 值转换

转载 作者:行者123 更新时间:2023-11-30 12:24:33 25 4
gpt4 key购买 nike

在 if 语句中,通过双重否定 (!!) 转换为 boolean 值是不必要的,因为这些 if 语句,例如,是等价的:

if (!!foo) {
// ...
}

if (foo) {
// ...
}

但是如果通过 !! 转换为 boolean 值呢?是在返回声明中吗?喜欢这里:

nameToSomething : function(someName){
if (someName) {
return !!this._var[someVar] ? this._var: undefined;
}
return undefined;
},

!!this._mServicesByName[someName] 的返回值与此处的 this._mServicesByName[someName] 相同?为什么?

用简单的英语解释为什么它不同/相同,以及如何在 JavaScript 中规避此规则的示例,因此我的 linter 不会“看到”它,我们将不胜感激。

非常感谢。

最佳答案

好吧,自问这个问题以来,我自己做了一些研究,实际上偶然发现了一些与 JavaScript 中的双重否定技巧非常相似的问题(以及答案)。 Herehere我找到了一些关于双 boolean 否定技巧本身的解释。长话短说,这就像用 Java 进行转换。 !!当您实际需要返回一个 boolean 值而不改变 true 和 false 时使用表达式。它是一个非倒置 boolean 值或简单地说,真正的 boolean 表示。

例如 !true 将为 false,反之亦然 !false 将为 true。但是通过简单地使用 !!true!!false 你可以获得相同的 truefalse 而不会改变结果并且仍然使用 boolean 值。对于 !!0false!!1true 也是如此。

现在,回到我的问题。在上面的代码片段中,我不能省略非反转 boolean 值,因为作为示例给出的函数需要一个 boolean 值。并且 false 不能更改为 true,反之亦然。它也不能用按位运算符代替,因为在这种情况下它不起作用。不过,在持有非倒置 boolean 值的函数上方创建一个新变量有助于使我的 linter 静音。所以这可能是解决问题的答案。

或者,或者,在 IDE 中为“no-extra-boolean”规则更改 linter 选项将是一个更好的决定)因为在 JavaScript 中,据我所知,它们经常被使用并且没有办法绕过它。这甚至不是一个坏习惯。有时,当您需要真正的 boolean 表示时,这是编写代码的一种非常方便的方法。并且是唯一的。

关于javascript - JavaScript 中没有额外的 boolean 值转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29897137/

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