可能重复:
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');
答案 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