2010-09-20 107 views
1

可能重複:
Javascript === vs == : Does it matter which 「equal」 operator I use?=== vs ==,怎麼了?

在PHP和JavaScript代碼,我看到更多的===在那裏,而不是什麼我已經習慣了==平等。 ===只是一種奇特的寫法==?與xtra =符號的交易是什麼?

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

是的,謝謝。這是一個騙局。這很有趣,我無法在搜索中找到它,因爲==和===是某種網站運營商,並且在搜索框中不起作用。 – Chamilyan 2010-09-20 07:41:35

+0

不要感到不好,你*不能*搜索這樣的人物。我在常見問題上找到了它,這也很晦澀 - http://stackoverflow.com/tags/javascript/faq。另外,我發佈了一個JavaScript鏈接,但是這個想法在PHP中是一樣的。 – Kobi 2010-09-20 07:43:40

+0

謝謝:)。我已經在QA世界生活了10年以上,所以我一直在檢查汽車駕駛員的愚蠢行爲。這一個滑倒我,但現在我只會感覺有點不好。 – Chamilyan 2010-09-20 08:02:31

回答

3

由於PHP和JavaScript是弱類型,有時使用==會引起不必要的強制(例如,轉換一個字符串到一個數字)。 ===運算符是一個身份運算符,它只在兩個操作數是同一個對象時才返回true。

2

==是一個基於javascript的值比較。如

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

===是一種基於值和類型的比較;

x = 5 
x ==='5' //False, becaouse diffrent types 
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 
0
在PHP

,多餘的等號(=)使得它絕對運算符(===) ,它確保/測試兩個值是否相同且數據類型相同,從而增加比較的精度。這裏有一個很好的閱讀tuxradar:http://www.tuxradar.com/practicalphp/3/12/2