当进行==和===比较时,变量的顺序是否重要?

这个问题在这里已经有了答案:

  • 3个不同等于4个答案

  • 它可以防止错误导致很难调试错误。 这是万一你不小心写=而不是==

    if ($var == null)  # This is true in case $var actually is null
    if ($var =  null)  # This will always be true, it will assign $var the value null
    

    相反,切换它们更安全:

    if (null == $var)   # True if $var is null
    if (null =  $var)   # This will raise compiler (or parser) error, and will stop execution.
    

    停止执行这个问题的特定行将使调试变得非常容易。 另一种方法比较困难,因为if条件发生变化,并且失去变量的价值,并且您不会轻易找到它,那么您可能会发现自己已进入该状态。


    我认为下面的代码将解释它:

    echo (( 0 == NULL ) ? "0 is null" : "0 is not null")  ."n";
    echo  (0 === NULL) ? "0 is null" : "0 is not null"  ;
    

    它会输出:

    0 is null
    0 is not null
    

    ===运算符检查值和类型,但0是一个数字,而NULL是NULL类型

    ==运算符只检查值,零可以被转换为“false”或“null”,因此我们得到的第一行“truthy”


    将这个结果与if进行比较。

     echo "Test '1abc' == 1 - ";
     if ('1abc' == 1) {
        echo 'ok';
     } else {
        echo 'fail';
     }
    
     echo "nTest '1abc' === 1 - ";
     if ('1abc' === 1) {
        echo 'ok';
     } else {
        echo 'fail';
     }
    

    然后阅读这个页面http://php.net/manual/en/language.types.type-juggling.php这是非常有趣的演讲;)

    链接地址: http://www.djcxy.com/p/58459.html

    上一篇: Does variables' order matter when doing == and === comparisons?

    下一篇: what does "===" imply in Javascript/Jquery?