Perché più lingue non supportano ===

2

Intendo come è usato in JavaScript. Sei curioso di sapere perché questo non è supportato in più lingue? Come Java, ad esempio, non ce l'ha? Sembra essere un operatore molto utile da avere.

    
posta AngryBird 26.05.2011 - 22:12
fonte

2 risposte

17

L'operatore "regolare" == di Javascript e PHP esegue conversioni implicite. === esiste quindi puoi omettere queste coercizioni quando non ne hai bisogno o non vuoi che vengano applicate. In molti altri linguaggi, compresi quelli dinamici (ad es. Python), le conversioni implicite sono molto meno frequenti. Cioè, gli interi possono essere convertiti in float quando si fa la matematica o il confronto, ma "1" non va insieme a 1 . In quelle lingue, l'operatore == è fondamentalmente l'equivalente di === del linguaggio più lento.

Per prendere l'esempio, Java va anche oltre - il suo == considererà solo due espressioni uguali se valutano esattamente lo stesso riferimento, cioè gli stessi oggetti (i tipi primitivi sono, come al solito, un'eccezione). Non puoi diventare più severo. Cosa dovrebbe fare un === , considerare due riferimenti uguali solo se derivano dalle stesse espressioni? ; -)

    
risposta data 26.05.2011 - 22:18
fonte
5

In JavaScript == utilizza tipo coercizione per valutare l'uguaglianza.

0 == false //=> true
1 == true  //=> true
null == undefined //=> true

L'uso di === elimina la coercizione di tipo, comportandosi come ci si aspetterebbe che l'operatore agisse. Se i tipi sono uguali e i valori sono uguali, restituisce true, altrimenti false.

Altre lingue che non utilizzano la coercizione di tipo per i controlli di uguaglianza non hanno bisogno di un === perché quella funzionalità è standard.

    
risposta data 26.05.2011 - 22:23
fonte

Leggi altre domande sui tag