If statement 比较器===什么时候应该用于==?

If statement 比较器===什么时候应该用于==?,if-statement,compare,equals,If Statement,Compare,Equals,所以在过去的5年里,我一直在学校和工作中积极地为机器人编程,但我从未试图找出==和==之间的区别 我可以看到比较器使用single=的差异,它将通过循环查看左手变量的值,例如: while($line = getrow(something)) 那么在以下语句中==和===之间的区别是什么: if ($var1 === $var2) //versus if ($var1 == $var2) 同样地: if ($var1 !== $var2) //versus if ($var1 != $va

所以在过去的5年里,我一直在学校和工作中积极地为机器人编程,但我从未试图找出==和==之间的区别

我可以看到比较器使用single=的差异,它将通过循环查看左手变量的值,例如:

while($line = getrow(something))
那么在以下语句中==和===之间的区别是什么:

if ($var1 === $var2)
//versus
if ($var1 ==  $var2)
同样地:

if ($var1 !== $var2)
//versus
if ($var1 != $var2)
我一直用双等分,我从来没有用过三等分。 我使用的语言有:php、vb.net、java、javascript、c/c++

我感兴趣的是系统地学习三重引号中的内容,这与双引号中的内容不同


什么时候应该用一个代替另一个?感谢您满足我的好奇心:)

==将仅检查值(相等运算符),其中===还检查数据类型(严格相等运算符)

1=='1'
为真。
1=='1'
为false-第一个是整数,第二个是字符串

1==true
为true。
1===true
为false-第一个是整数,第二个是布尔值


通常,您希望使用==(相等运算符),但有时您希望确保事情属于某些类型。我相信有人能提供一个例子,我想不出一个很好的例子,但我肯定用过它。

通常,==只看价值相等。比如说

5 == 5.0  //true
但是,==还考虑值和类型(使用我熟悉的语言)

仅供参考,=运算符(通常称为赋值运算符)用于将左侧参数的值设置为右侧。这是很明显的。但是,在大多数语言中,如果赋值成功,也会返回true。您希望避免在打算使用==(或===)的地方使用=,因为它看起来像一个比较,但事实并非如此,而且它会意外地返回true

例如,假设您想检查一个数字是否等于10

myNumber = 7;
if(myNumber = 10)
{
    //will always be true and execute this code because myNumber will successfully
    //be assigned the value of 10 instead of checking to see if the number is 10.
    //oops!
}

最后一点,这在PHP和JavaScript中是正确的。我认为C++中没有a===运算符,java也有不同的含义。

< p>我不知道这对所有语言都适用,但是在JavaScript中,= = =代表类型比较。
0 == false (true) 0 === false (false)
比较falsy值时不使用===是一个常见的js错误

var a;

if(a) do something

(如果a为零,则不会输入if)

$a====b
如果$a等于$b,并且它们属于相同类型,则为TRUE。(在PHP4中介绍)

$a!==$b
如果$a不等于$b,或者它们不是同一类型,则为TRUE。(在PHP4中介绍)

在PHP和JavaScript中(我不确定其他语言的三重
==
语法是否有效),区别在于
==
是一种严格的比较。而
=
是松散的。这意味着
==
比较值和类型,但
==
只是比较值。下面的错误PHP代码就是一个很好的例子:

$str = 'Zebraman stole my child\'s pet lime!';

// Search for zebra man
if(strpos($str, 'Zebraman')){
    echo 'The string contains "Zebraman"';
}else{
    echo 'The string doesn\'t contain "Zebraman"';
}

因为
strpos($str,'Zebraman')
返回
0
(字符串的索引
Zebraman
),并且因为
0
falsy
。该代码将输出
字符串不包含“Zebraman”
。正确的代码使用与false的严格比较:

$str = 'Zebraman stole my child\'s pet lime!';

// Search for zebra man
if(strpos($str, 'Zebraman') !== false){
    echo 'The string contains "Zebraman"';
}else{
    echo 'The string doesn\'t contain "Zebraman"';
}


看看
$var
@pst,
$var
在Javascript中是一个完全合法的标识符。(当然,
var
不会。)@Kirk Woll我知道。我的评论是正确的。所有这些。:)在JavaScript中
5===5.0
也是正确的。Java和C/C++都没有等价的
=
。实际上,哪些语言有
==
或等效语言?Good catch@pst,我在float中添加了显式转换。5 !== (浮动)5。我想您可能会发现===在具有惰性计算和松散键入的语言中很常见。PHP、JavaScript和我相信Python是这个列表的开始。对不起,我指的是Groovy,而不是Python。在JavaScript中,它们对浮点和int没有区别。它们都只是“数字”类型。这就是为什么
5===5.0000
。一个更好的例子可能是
5=='5'
但是
5!='5'
$str = 'Zebraman stole my child\'s pet lime!';

// Search for zebra man
if(strpos($str, 'Zebraman') !== false){
    echo 'The string contains "Zebraman"';
}else{
    echo 'The string doesn\'t contain "Zebraman"';
}