2010-03-19 199 views
9

我曾遇到一个运算符“===”。但是我不记得它是什么......或者我们在哪里使用它......或者有没有这样一种运营商?它在哪里使用?什么是“===”运算符?

回答

19

在PHP中,JavaScript中,ECMAScript的,ActionScript 3.0中,和其他一些类似的,动态语言的,有两种类型的相等性检查的:==(非全等)和===(严格平等)。要显示一个例子:

5 == "5" // yep, these are equal, because "5" becomes 5 when converted to int 
5 === "5" // nope, these have a different type 

基本上,只要您使用==,你就有可能自动类型转换。使用===可确保值在逻辑上相等,并且对象的类型也相同。

+0

Javascript和ECMAScript有什么区别吗? – 2010-03-19 09:55:43

+2

@ urtle,是的。 ECMAScript是JavaScript现在基于的语言标准化工作(JavaScript是第一个),并且有许多语言(不仅仅是JavaScript),它们从ECMAScript派生它们的核心语法,然后添加其他元素或结构(例如ActionScript 3.0)。JavaScript和ECMAScript之间的主要区别在于,JavaScript是ECMAScript,因为它在实践中发生了......即,浏览器如何实际实现ECMAScript(例如与标准,扩展等的偏差) – 2010-03-19 22:09:36

+1

您在第二个示例中犯了一个错字,应该是'5 ===“5”'而不是'5 === 5''。 – 2011-02-27 09:22:07

8

它用在JavaScript和PHP中,可能更多(我可能还没有遇到!),它用于比较两个比较的东西是否具有相同的对象类型以及具有相同的值。

+0

也用于PHP .. – vpram86 2010-03-19 09:13:38

+0

不仅JS。还有很多其他语言。 – 2010-03-19 09:14:01

+0

@Aviator @ Felix感谢您指出,编辑:) – 2010-03-19 09:15:59

1

===是平等的,至少在PHP

Here is a link有助于解释thsi

+0

在Prolog中,我记得。我不确定。 – MatrixFrog 2010-03-19 09:16:14

2

如果两个对象相同,它通常测试。即。如果它们具有相同的值,但它们确实是同一个对象,则不是。

16

在JavaScript中,==确实类型强制,而===,“严格等于”操作符没有。例如:

"1" == 1; // true 
"1" === 1; // false 

还有一个相应的严格不等式运算符!==

3

“===”运算符用于检查 值是否相同以及相同类型。

$a === $b if $a is equal to $b, and they are of the same type. 
0

在Ruby中,三等于是运算符(隐含地)由case/when构造使用来确定对象“落入”特定情况的时间。例如,Ruby有一个“Range”对象的概念; 1..10表示“1到10之间的所有值,包括1和10。”所以`3 == 1..10'是错误的,因为3是一个数字,1..10是一个范围。但是,

3 === 1..10返回true,因为3是那个范围内。

case/when决定参数属于哪种情况时使用此项。所以,

case a 
    when (1..10) 
    puts "This is a valid rating" 
    else 
    puts "invalid" 
    end 

按预期工作。