Javascript, declarații condiționate

Operatorii condiționați vă permit să săriți sau să executați alți operatori, în funcție de valoarea expresiei specificate. Acești operatori sunt puncte de decizie în program și, uneori, se mai numesc și operatori "ramificați".







Instrucțiunea if / else

În această formă, expresia este evaluată mai întâi. Dacă rezultatul este adevărat, atunci instrucțiunea este executată. Dacă expresia returnează o valoare falsă, atunci instrucțiunea nu este executată. De exemplu:

Rețineți că parantezele din jurul expresiei condiționate sunt o parte obligatorie a sintaxei instrucțiunii if.

Cea de-a doua formă a instrucțiunii if introduce constructul altceva, care este executat atunci când expresia returnează o valoare falsă. Sintaxa sa este:

Acest formular execută operatorul1 dacă expresia returnează true și operatorul2 dacă expresia returnează o valoare falsă. De exemplu:

Declarația altceva dacă

În acest fragment nu există nimic special. Aceasta este doar o secvență de declarații if, în care fiecare instrucțiune if face parte din declarația else a instrucțiunii anterioare.

Instrucțiunea de comutare

Instrucțiunea if creează o ramură în fluxul programului, iar ramificația cu mai multe poziții poate fi implementată prin mai multe alte declarații. Cu toate acestea, aceasta nu este întotdeauna cea mai bună soluție, mai ales dacă toate ramurile depind de valoarea aceleiași expresii. În acest caz, este inutil să recalculați valoarea aceleiași expresii în mai multe declarații.

Instrumentul de comutare este conceput special pentru aceste situații. Cuvântul cheie de comutare este urmat de o expresie în paranteze și un bloc de cod în bretele curbate:

Cu toate acestea, sintaxa completă a instrucțiunii de comutare este mai complexă decât cea prezentată aici. Locurile diferite din bloc sunt marcate cu cuvântul cheie. urmată de expresia și caracterul de colon.

Când se execută instrucțiunea switch, ea evaluează valoarea expresiei și apoi caută eticheta de caz corespunzătoare acestei valori (meciul este determinat folosind operatorul de identitate ===). Dacă se găsește o etichetă, blocul de cod este executat începând cu prima instrucțiune ce urmează etichetei de caz. Dacă eticheta de caz cu valoarea corespunzătoare nu este găsită, execuția începe cu prima instrucțiune urmând setarea implicită a etichetei speciale:. Dacă eticheta implicită: lipsește, instrucțiunea comutator este omisă în întregime.







Funcționarea operatorului de comutare este greu de explicat în cuvinte, explicația prin exemplu este mult mai clară. Următoarea instrucțiune de comutare este echivalentă cu instrucțiunile repetate if / else afișate în exemplul anterior:

Rețineți ruperea cuvintelor cheie la sfârșitul fiecărui bloc de cazuri. Declarația de pauză are ca rezultat transferul controlului la sfârșitul instrucțiunii switch și continuarea instrucțiunilor care urmează. Construcția cazului în instrucțiunea de comutare specifică numai punctul de plecare al codului executabil, dar nu specifică niciun punct final.

Dacă nu există declarații de pauză, operatorul de comutare va executa blocul de cod cu eticheta de caz corespunzătoare valorii expresiei și va continua executarea instrucțiunilor până când ajunge la sfârșitul blocului. În cazuri rare, acest lucru este util pentru scrierea codului care se deplasează de la o etichetă de caz la alta, dar în 99% dintre cazuri, trebuie să terminați cu atenție fiecare bloc de caz cu o declarație de pauză. (Dacă utilizați comutatorul în interiorul unei funcții, puteți utiliza întoarcerea în loc de pauză, ambele fiind folosite pentru a termina comanda întrerupătorului și a împiedica transmiterea următoarei etichete a cazului.)

Mai jos este un exemplu mai practic de utilizare a instrucțiunii switch, aceasta convertește valoarea într-un șir într-un mod care depinde de tipul de valoare:

Rețineți că în cele două exemple anterioare, cuvintele cheie ale cazului au fost urmate de numere sau literali de șir. Acesta este modul în care declarația de comutare este cea mai des utilizată în practică, dar standardul ECMAScript vă permite să specificați expresii arbitrare după caz.

Instrucțiunea comutator calculează mai întâi expresia după cuvântul cheie de comutare și apoi expresia de caz în ordinea în care sunt specificate până când se găsește o valoare de potrivire. Faptul coincidenței este determinat cu ajutorul operatorului de identitate === și nu cu operatorul de egalitate ==, astfel încât expresiile trebuie să se potrivească fără nici o conversie de tip.

Deoarece fiecare caz al instrucțiunii switch nu calculează toate expresiile de caz, evitați să utilizați expresii de caz care au efecte secundare, cum ar fi apeluri de funcții și alocări. Cel mai sigur mod de a limita expresiile de caz la expresii constante.

După cum am explicat mai devreme, dacă niciuna dintre expresiile de caz nu se potrivește cu instrucțiunea comutator, instrucțiunea comutator începe executarea instrucțiunii cu eticheta implicită. Dacă lipsește eticheta implicită, corpul comutatorului operatorului este complet ignorat. Rețineți că în exemplele anterioare, eticheta implicită: este specificată la sfârșitul corpului instrucțiunii comutator după toate etichetele de caz. Acesta este un loc logic și obișnuit pentru el, dar de fapt acesta poate fi localizat oriunde în interiorul instrucțiunii switch.

Operator ternar.

Operanzii unei instrucțiuni condiționale pot fi de orice tip. Primul operand este evaluat și folosit ca valoare booleană. Dacă primul operand are o valoare reală, atunci valoarea expresiei din al doilea operand este evaluată și returnată. Dacă primul operand are o valoare falsă, valoarea expresiei din al treilea operand este evaluată și returnată. Doar un singur operand, cel de-al doilea sau al treilea, și niciodată ambele sunt calculate.

Același rezultat poate fi obținut cu ajutorul instrucțiunii if, dar a operatorului. se dovedește adesea o abreviere convenabilă. Mai jos este un exemplu tipic în care variabila este verificată (și are o valoare adevărată) și, dacă da, se ia valoarea acesteia și, dacă nu, se ia valoarea implicită:

Acest test este echivalent cu următoarea declarație if, dar este mai compact:







Articole similare

Trimiteți-le prietenilor: