2010-03-19 4 views
9

J'ai déjà rencontré un opérateur "===". Mais je ne me souviens pas de ce que c'était .. ou où l'utilisons-nous .. ou existe-t-il un tel type d'opérateur? où est-il utilisé ??À quoi sert l'opérateur "==="?

Répondre

19

En PHP, JavaScript, ECMAScript, ActionScript 3.0, et un certain nombre d'autres semblables, les langages dynamiques, il existe deux types de contrôles à l'égalité: == (d'égalité non stricte) et === (égalité stricte). Pour afficher un exemple:

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

Fondamentalement, lorsque vous utilisez ==, vous risquez des conversions de type automatiques. L'utilisation de === garantit que les valeurs sont logiquement égales ET que les types des objets sont également égaux.

+0

Y a-t-il une différence entre Javascript et ECMAScript? –

+2

@Turtle, oui. ECMAScript est l'effort de normalisation linguistique sur lequel repose JavaScript (JavaScript étant le premier), et de nombreux langages - pas seulement JavaScript - dérivent leur syntaxe principale d'ECMAScript, mais ajoutent ensuite d'autres éléments ou constructions (par exemple, ActionScript 3.0).La principale différence entre JavaScript et ECMAScript, est que JavaScript est ECMAScript tel qu'il se produit en pratique ... c'est-à-dire, comment les navigateurs implémentent réellement ECMAScript (tels que les déviations par rapport à la norme, extensions, etc.) –

+1

Vous avez fait une erreur sur le second exemple , devrait être '5 ===" 5 "' au lieu de '5 === 5'. –

8

Son utilisé en JavaScript, PHP et peut-être plus (que je n'ai peut-être pas encore rencontré!), Il est utilisé pour comparer si les deux choses comparées sont du même type d'objet et ont la même valeur.

+0

Également utilisé dans PHP .. – vpram86

+0

Non seulement JS. Aussi dans beaucoup d'autres langues. –

+0

@Aviator @ Felix merci de souligner, édité :) –

1

=== est l'égalité, au moins en PHP

Here is a link qui aide à expliquer thsi

+0

Et dans Prolog aussi, si je me souviens. Je ne suis pas certain. – MatrixFrog

2

Il teste habituellement si deux objets sont les mêmes. c'est à dire. pas s'ils ont la même valeur (s) mais s'ils sont vraiment le même objet.

16

En JavaScript, == tape coercion, alors que ===, l'opérateur "strict equality" ne le fait pas. Par exemple:

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

Il y a aussi un opérateur d'inégalité stricte correspondant, !==.

3

"===" opérateur est utilisé pour vérifier les valeurs sont égales ainsi que le même type.

Exemple

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

Dans Ruby, triple equals est l'opérateur (implicitement) utilisé par la construction case/when pour déterminer quand un objet "tombe" dans un cas particulier. Par exemple, Ruby a un concept d'objets "Range"; 1..10 signifie «toutes les valeurs comprises entre 1 et 10 inclusivement». Donc `3 == 1..10 'est faux, puisque le 3 est un nombre et le 1..10 est un Range. Mais,

3 === 1..10 renvoie vrai, puisque 3 est dans cette gamme. Case/when utilise ceci pour décider à quel cas appartient un argument. Ainsi,

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

fonctionne comme prévu.