所以我在过去的5年里一直积极地在学校和工作中编写机器人,但我从未试图找出==和===之间的区别。
我可以看到使用单个=的比较器的区别,它将通过循环查看左手变量的值,例如:
while($line = getrow(something))
那么在以下语句中==和===之间的区别是什么:
if ($var1 === $var2)
//versus
if ($var1 == $var2)
同样地:
if ($var1 !== $var2)
//versus
if ($var1 != $var2)
我一直使用双等号,我从未使用过tripple。 我使用的语言是:php,vb.net,java,javascript,c / c ++。
我有兴趣系统地学习与双引号不同的三重引语中发生的事情。
何时应该使用另一个?谢谢你满足我的好奇心:))
答案 0 :(得分:3)
通常,==仅查看值的相等性。所以,例如......
5 == 5.0 //true
但是,===还会考虑值和类型(使用我熟悉的语言)。
var five = 5;
var five_float = (float)5.0;
five === 5; //true - both int, both equal to 5
five_float === 5; //false - both equal 5 but one is an int and one is a float
FYI,=运算符(通常称为赋值运算符)用于将左侧参数的值设置为右侧。这很明显。但是,在大多数语言中,如果赋值成功,这也将返回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 ++或Java中没有===运算符,==也有不同的含义。
答案 1 :(得分:1)
$a === $b
如果$ a等于$ b,则为TRUE,它们属于同一类型。 (在PHP 4中介绍)
$a !== $b
如果$ a不等于$ b,或者它们的类型不同,则为TRUE。 (在PHP 4中介绍)
答案 2 :(得分:0)
==将仅检查值(相等运算符),其中===也检查数据类型(严格相等运算符)。
1 == '1'
是真的
1 === '1'
为false - 第一个是Integer,第二个是String。
1 == true
是真的
1 === true
为false - 第一个是Integer,第二个是布尔值。
通常你想使用==(相等运算符),但有时你想确保某些类型的东西。我敢肯定有人可以提供一个例子,我不能想到一个我的头脑,但我肯定使用它。
答案 3 :(得分:0)
在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
。该代码将输出The string doesn't contain "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"';
}
答案 4 :(得分:-2)
我不知道这是否适用于所有语言,但在javascript中===代表类型比较。
0 == false (true) 0 === false (false)
比较假值时,不使用===是一个常见的js错误。
var a;
if(a) do something
(如果a为零,则不会输入if)