gpt4 book ai didi

Javascript if-else 运算符为什么在检查不等于时有什么区别

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

好了,翻了那么多页,上面的求不等于的方法我都用过了。然而,目前我的兴趣达到顶峰并且我猜已经有一段时间了。以下示例之间的区别是什么,为什么有时在不同的情况下似乎只有一种变体会优于另一种变体,我一直在努力寻找可靠的答案,但我想搜索起来并不那么容易。

无论如何,在很多情况下,我不得不做类似的事情,因为似乎没有别的办法。

if(str == bad_condition)
{
//ignore
}
else
{
//code to do something
}

许多其他时候我正在做以下任何一项

if(!str == bad_condition)
{
//code to do something
}

if(str != bad_condition)
{
//code to do something
}

if(str !== bad_condition)
{
//code to do something
}

现在我想这里的最终问题是,为什么最后 3 个中的任何一个似乎只对某些事情有效?是否有时间和地点我应该将其中一个置于另一个之上?或者这只是我抽签的一些随机运气,因为我通常不得不处理其他人的原始代码库。总的来说,我只是好奇,我不想引发争论。我只是想认真地知道以上任何一项的使用是否存在重大差异,以及是否存在差异、原因或方式。

最佳答案

最后三个并不相同,您几乎肯定不想使用其中的第一个。让我们分解一下:


if(!str == bad_condition)
{
//code to do something
}

不要那样做。首先会发生什么,评估 !str,然后将其结果与 bad_condition 进行比较。 !str 的结果将是 truefalse。 (如果 str""0null,则为 trueundefinedNaN;否则为 false。)所以除非 bad_conditiontruefalse,您不想将 !str 与它进行比较,如果 bad_condition truefalse,通常有更好的表达式编写方式。


if(str != bad_condition)
{
//code to do something
}

这将使用 "loose" equalitystrbad_condition 进行比较.松散的平等是棘手的,它的规则也很复杂。 "0"== 0true,例如,""== 0"0"== false ; "false"== falsefalse。如果您知道 strbad_condition 是相同的类型,那很好,但如果您不知道,就会陷入类型强制转换的困境.


if(str !== bad_condition)
{
//code to do something
}

这将使用 strict equalitystrbad_condition 进行比较.这意味着没有类型强制完成,如果 strbad_condition 不是同一类型,条件将始终为 false

关于Javascript if-else 运算符为什么在检查不等于时有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13857392/

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