2009-12-22 21 views
22

Possibili duplicati:!!
Javascript === vs == : Does it matter which “equal” operator I use?
Javascript operator !==In JavaScript è = uguale ==

Guarda this commit

È != stesso !== in JavaScript?

[1]:

+9

Vedere http://stackoverflow.com/questions/359494/javascript-vs – Pool

+3

-1: Google è stato danneggiato? Una ricerca per "operatori di comparazione Javascript" ha trovato dozzine di spiegazioni della differenza. Cosa c'era di sbagliato in questi? Cos'altro hai bisogno di sapere? –

+5

@ S.Lott: Aveva bisogno di sapere che erano chiamati "operatori di confronto Javascript" per una cosa - che la domanda non implica (per essere onesti con il poster originale). – Amadiere

risposta

54

Sono sottilmente non uguali.

!= controlla il valore
!== controlli il valore e tipo

'1' != 1 // false (these two are the same) 
'1' !== 1 // true (these two are **not** the same). 

Nell'esempio precedente. La prima metà dell'espressione è una stringa, la seconda metà è un numero intero.

+1

Spiffing answer old cap – Andrew

5

No, non è lo stesso. Vedi ad esempio here.

4 !== '4' returns true (and 4 === '4' returns false) 
4 != '4' returns false (and 4 == '4' returns true) 
+1

E per il magro pieno, non c'è niente come le specifiche. È possibile scaricare le ultime da qui: http://www.ecma-international.org/publications/files/drafts/ E 'il file PDF che inizia con "tc39-" (al momento della stesura, tc39-2009-050.pdf) . Dice che è una bozza, ma è stata votata all'inizio di questo mese. –

+1

E vedi http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-which-equal-operator-i-use/1813267#1813267 come leggere le specifiche! – nalply

+0

Hehe, il fatto che tu abbia bisogno di un manuale per leggere una specifica dice davvero qualcosa sulla qualità della specifica stessa :) – Fortega

0

Controlla non solo il valore ma anche il tipo di elementi confrontati. Questo è lo stesso anche in PHP e in altre lingue.

8

Da

http://en.wikipedia.org/wiki/JavaScript_syntax#Operators

! == Non identico

! = Non uguale

AND "Identico significa uguale e dello stesso tipo."

Da

http://docstore.mik.ua/orelly/webprog/jscript/ch05_04.htm

"in JavaScript, numeri, stringhe e valori booleani vengono confrontati in base al valore. ... D'altra parte, gli oggetti, array e funzioni vengono confrontati con riferimento . "

-

Quindi, in sintesi sono le stesse? No, perché c'è un test aggiuntivo con! == (oltre! =) Per tipo uguaglianza e uguaglianza.

4

La grande differenza è che! = Esegue la coercizione di tipo. Cioè, un valore viene effettivamente castato all'altro prima che l'uguaglianza sia controllata. Questo è il motivo per cui, come nella risposta di Amadiere:

'1' != 1 

restituisce false. Lo stesso vale per == v. ===. In generale, evita == e! = A meno che tu non voglia specificamente eseguire la coercizione. Usa === e! == e controlla esattamente il risultato che stai cercando.

0

Dai uno sguardo allo JSLint per una spiegazione della differenza. Ti consiglio anche di passare il codice JavaScript almeno una volta tramite JSLint, potresti imparare cose preziose ...