=== vs ==,怎么了?

时间:2010-09-20 07:35:26

标签: equals

  

可能重复:
  Javascript === vs == : Does it matter which “equal” operator I use?

在PHP和Javascript代码中,我看到更多===,而不是我习惯==的平等。 ===只是写==的一种奇特方式吗?什么是xtra = sign?

的交易

PHP代码示例:

<?php

// Parsing Yahoo! REST Web Service results using
// unserialize. PHP4/PHP5
// Author: Jason Levitt
// February 1, 2006

error_reporting(E_ALL);

// output=php means that the request will return serialized PHP
$request =  'http://yahoopipesURL';

$response = file_get_contents($request);

if ($response === false) {
 die('Request failed');
}

$phpobj = unserialize($response);

echo '<pre>';
print_r($phpobj);
echo '</pre>';

?>

我的一个问题的Javascript代码示例:

function setOrCreateMetaTag(metaName, name, value) {
    var t = 'meta['+metaName+'='+name+']';
    var mt = $(t);
    if (mt.length === 0) {
        t = '<meta '+metaName+'="'+name+'" />';
        mt = $(t).appendTo('head');
    }
    mt.attr('content', value);
}

setOrCreateMetaTag(name, viewport, 'width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0');

4 个答案:

答案 0 :(得分:3)

由于PHP和JavaScript的类型较弱,因此有时使用==会导致不必要的强制(例如,将字符串转换为数字)。 ===运算符是一个标识运算符 - 如果两个操作数都是同一个对象,它只返回true。

答案 1 :(得分:2)

==是基于值的javascript比较。如

x = 5
x == '5' //True

===是基于值和类型的比较;

x = 5
x ==='5' //False, becaouse diffrent types

答案 2 :(得分:1)

'==='表示完全相等,而'=='表示当前上下文中的等效。

这在比较数字时会产生很大的不同,如下面的代码片段所示(从php文档中窃取):

<?php
$first = 10;
$second = 10.0;
$third = "10";

if ($first == 10) print "One";
if ($second == 10) print "Two";
if ($third == 10) print "Three";

if ($third === 10) print "Four";
if ($second === 10) print "Five";
if ($first === 10) print "Six";
?>
Will print out
OneTwoThreeSix

答案 3 :(得分:0)

在PHP中,extra =符号使其成为绝对相等运算符(===),它确保/测试两个值是否相同且数据类型相同,从而为比较增加了精度。以下是来自tuxradar的精彩读物:http://www.tuxradar.com/practicalphp/3/12/2