martie 10, 2021

== vs === De ce nu totul este egal (și mai puțin în JavaScript)

Dacă ați observat vreodată, nu toți operatorii egali sunt egali în JavaScript;). În special, vorbesc despre == (dublu egal) și === (triplu egal). De fapt, deși în aparență, ei fac lucruri similare, în multe cazuri se comportă complet diferit. Gestionarea bună a acestor doi operatori este esențială pentru o dezvoltare bună și de a nu încorpora erori nedorite. Dar hei, hai să vedem ce este tot!

dublu egal (==)

Când în codul nostru vrem să comparăm două variabile, putem folosi acest operator pentru a verifica dacă acestea Două variabile sunt egale, dar … feriți-vă! Pentru că dacă cele două variabile pe care vrem să le comparăm sunt de diferite tipuri, comportamentul codului nostru poate deveni „ciudat”.

pentru a înțelege un pic mai bun explicația , fixați postul meu de tastare dinamică.

După cum veți ști (cel puțin după citirea postului de tipare dinamică), JavaScript este tastarea dinamică și care duce la aplicarea motorului pentru a transforma o variabilă de la un tip la altul . De multe ori această transformare nu este ceea ce ne așteptăm, pot să arăt foarte mult când folosesc operatorul „==”.

Practic, operatorul == ceea ce face este comparați 2 valori, dar face fără Verificarea tipului variabilelor.

Operator dublu egal (==): comparați 2 valori, dar o face fără a verifica tipul de variabile

cu acest lucru cu care vreau să spun următoarele: Dacă de exemplu, am o variabilă numerică și este în valoare de 1 și am o variabilă de șir care merită „1”, în comparație cu acest operator , răspunsul va da adevărate:

var a = 1;var b = '1'if (a == b) { console.log('son iguales')} else { console.log('son diferentes')}

Aceste imprimări pe ecran „sunt aceleași”, da, exact, chiar dacă acestea sunt diferite tipuri; Deoarece JavaScript convertește cele două variabile la același tip folosind coerciția, aceste două variabile ajung să fie la fel.

coerciție: convertiți valoarea unei variabile de la un tip la altul, pentru Exemplu de conversie a valorii „1” (tip de șir) la numeric, ar duce la valoarea 1 (de tip numeric)

dar ceea ce se întâmplă dacă comparăm valoarea falsă Cu numărul zero

var a = false;var b = 0;if (a == b) { console.log('son iguales')} else { console.log('son diferentes')}

Acest amprente pe ecran „sunt aceleași”. Și pentru că? Deoarece atunci când JavaScript convertește 0 (zero) la Boolean, pentru motorul JavaScript, 0 (zero) devine fals, apoi se întreabă dacă False este egal cu FALSE și starea returnează imprimarea adevărată pe ecran „sunt egale”.

este un caz mai mult, prezentând următoarele pe ecran?

var a = '';var b = 0;if (a == b) { console.log('son iguales')} else { console.log('son diferentes')}

Acest tipar „sunt aceleași” deși 0 și șirul gol ” Foarte diferit, deoarece, la variabila „a” a cărei valoare este un șir gol, atunci când îl convertiți la o valoare numerică, acest lucru este egal cu 0 (zero).

și cum fac când vreau când vreau Comparați luând în considerare și tipul variabilei?

Ați vansat!, Utilizând același operator triplu (===)

triplu egal (===)

În conturi de rezumat, triple verifică în mod egal conținutul variabilei și, de asemenea, verificați dacă cele două variabile sunt de același tip. De aceea se spune că este mai sigur decât == (Dual egal).

operator triplu egal (===): verificați conținutul variei De asemenea, verificați dacă cele două variabile sunt de același tip.

revenirea la exemplul anterior:

var a = 1;var b = '1';if (a === b) { console.log('son iguales')} else { console.log('son diferentes')}

În acest caz, ca „A” și „B” nu sunt de același tip, este tipărită pe consola „sunt diferite”.

cu exemplul:

var a = false;var b = 0;if (a === b) { console.log('son iguales')} else { console.log('son diferentes')}

este, de asemenea, afișat în consola „sunt diferite”, deoarece „A” de tip boolean și „B” de tip numeric sunt diferite tipuri.

În cele din urmă :

var a = '';var b = 0;if (a === b) { console.log('son iguales')} else { console.log('son diferentes')}

cum ar putea presupune, de asemenea, imprimă în consola „sunt diferite”.

Concluzie

După cum puteți vedea, există o mare diferență între utilizarea == și ===, de fapt, utilizarea abuzivă poate duce la bug-uri nedorite. Prin urmare, la îndoială, utilizați întotdeauna === și veți salva mai mult o durere de cap.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *