2011-09-09 35 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