什么时候比较器===用于==?

时间:2011-09-09 04:43:11

标签: if-statement compare equals

所以我在过去的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 ++。

我有兴趣系统地学习与双引号不同的三重引语中发生的事情。

何时应该使用另一个?谢谢你满足我的好奇心:))

5 个答案:

答案 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中介绍)

Reference

答案 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"';
}

Example Here

由于strpos($str, 'Zebraman')返回0(字符串Zebraman的索引),因此0falsy。该代码将输出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"';
}

Example Here

See the PHP man page on strpos

答案 4 :(得分:-2)

我不知道这是否适用于所有语言,但在javascript中===代表类型比较。

0 == false (true) 0 === false (false)

比较假值时,不使用===是一个常见的js错误。

var a;

if(a) do something

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