2011-09-09 42 views
2

所以我一直在學校裏積極編程bot,並且在過去的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++。

我有興趣系統地學習與雙引號不同的三腳報價中發生了什麼。

什麼時候應該用於另一個?感謝您安撫我的好奇心:)

+0

這是JavaScript? –

+0

看看http://www.daaq.net/old/javascript/index.php?page=js+operators&parent=core+javascript –

+1

'$ var' < - 我希望它*不* JavaScript ...但在任何情況下,請用*適當的語言*標記*問題。 – 2011-09-09 04:59:31

回答

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 

僅供參考,運算符(通常稱爲賦值運算符)用於將左側參數的值設置爲右側。這很明顯。但是,在大多數語言中,如果賦值成功,這也將返回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中有一個===運算符,==的意思也略有不同。

+0

在JavaScript'5 === 5.0'中也是如此。 Java和C/C++都沒有'==='等價物。其實,哪些語言*做*有'==='或同等的? – 2011-09-09 05:01:39

+0

良好的抓住@ pst,我在明確的演員中添加了浮動。 5!==(float)5。我認爲你可能會發現===在懶惰評估和寬鬆打字的語言中很常見。 PHP,JavaScript,我相信Python是名單的開始。 –

+0

Python沒有===。 – Dirk

0

==將檢查僅值(等於運算符),其中===也檢查數據類型(嚴格相等運算符)。

1 == '1'是正確的。
1 === '1'是錯誤的 - 第一個是整數,第二個是字符串。

1 == true爲真。
1 === true是錯誤的 - 第一個是整數,第二個是布爾值。

通常你想使用==(相等運算符),但有時你想確保東西是某些類型。我敢肯定,有人可以提供一個例子,我想不出一個我的頭頂,但我已經明確地使用它。

-2

我不知道這是否適用於所有語言,但在JavaScript中===代表類型比較。

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

這是一個常見的js錯誤,在比較falsy值時不使用===。

var a; 

if(a) do something 

(如果是零,如果將不會進入)

1

$a === $b TRUE,如果$ a等於$ b,並且它們是同一類型的。 (在PHP 4中引入)

$a !== $b如果$ a不等於$ b,或者它們不是相同類型,則爲TRUE。 (PHP 4引進)

Reference

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"。正確的代碼使用以虛假的嚴格的比較:

$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