gpt4 book ai didi

javascript - 条件 "if(x)"与 "if(x == true)"不同吗?

转载 作者:搜寻专家 更新时间:2023-11-01 04:43:56 27 4
gpt4 key购买 nike

我想知道下面的条件语法之间的核心区别是什么?

if (something) {
// do something
}

对比

if (something == true) {
// do something
}

有什么区别吗?

编辑:我深表歉意。问问题的时候我打错了。我并不是要放三个等号。我知道三等号是一个严格的运算符。我的意思是问“==”是否等同于 if (something)。

最佳答案

区别在于在if(something)中,something is evaluated as boolean .基本上是

if(ToBoolean(something))

哪里ToBoolean是一个内部函数,被调用以将参数转换为 bool 值。您可以使用双 negation 模拟 ToBoolean : !!something.

在第二种情况下,both operands are (eventually) converted to numbers first , 所以你最终得到了

if(ToNumber(something) == ToNumber(true))

这可能会导致截然不同的结果。同样,ToNumber是一个内部函数。可以使用 unary plus operator 模拟(在某种程度上) : +something == +true。在实际算法中,something 首先传递给 ToPrimitive如果 something 是一个对象。


示例:

假设

var something = '0'; // or any other number (not 0) / numeric string != 1

if(something) 将为 true,因为 '0' 是一个非空字符串。

if(something == true) 将为 false,因为 ToNumber('0')0ToNumber(true)10 == 1false

关于javascript - 条件 "if(x)"与 "if(x == true)"不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11852801/

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