Ho appena stato a guardare la funzione di _.isEqual
Underscore.js ed una sezione del codice più o meno così:Questa riga di Underscore.js esegue il controllo di uguaglianza effettivamente necessario?
if (a === b) return true;
if (typeof a !== typeof b) return false;
if (a == b) return true;
Mi chiedo solo se c'è un caso in cui è stato possibile raggiungere la terza dichiarazione e valutare a true
?
Edit: Giusto per essere chiari, questo non è il mio codice di cui sto parlando, sto leggendo la fonte di sottolineatura, in particolare, this line ed ero curioso di sapere il motivo per cui stanno facendo questo.
Deve esserci qualche strano caso limite dove questo è possibile ... –
@nickf: Considerando che '==' e '===' sono identici quando i tipi sono gli stessi, non riesco a vedere come il primo e il terzo test possano fornire un risultato diverso. Anche nel caso di 'null' dove il' typeof' differisce dal 'Type' interno, non costringe a nessun valore eccetto' undefined', che ha un valore 'typeof' diverso. E se ci * è * un caso limite là fuori, come fai a sapere che vorresti * che costringesse? Sembra strano avere un test '==' e a '===' degli stessi valori. O vuoi la coercizione di tipo o non lo fai. – user113716
... Dovrei chiarire che con * "tu" * nel commento sopra, non intendevo implicare * nickf *, ma piuttosto * una persona *. – user113716