Structuri de control

Blocuri

Pentru a grupa mai multe afirmații într-un bloc, le îmbrăcăm cu acolade:

{
    statement1;
    statement2;
    // ...
}

Vom folosi aceste blocuri pentru structurile de control și bucle.

Atenție, doar let și const au durata de viață (scope) într-un bloc, var va trăi în interiorul funcției.

if ... else

Vom folosi if pentru a executa o afirmație doar dacă o condiție este truthy. Opțional, putem continua cu else pentru a executa o altă afirmație când condiția precedentă e falsy:

if (condition) {
    statement1;
} else {
    statement2;
}

Atenție, cu toate că după if () poate urma atât o singură expresie cât și un bloc, se recomandă mereu să se folosească blocuri (scriem în acolade după if).

Putem crea o secvență de if ... else:

if (condition1) {
  statement1;
} else if (condition2) {
  statement2;
} else if (conditionN) {
  statementN;
} else {
  statementLast;
}

astfel, se vor verifica condițiile până una din ele este truthy, și se va executa blocul corespunzător de afirmații.

Atenție, din cauză că putem folosi orice operator (sau funcție) în condiție, poate fi confuz dacă vom folosi atribuirea acolo, care mereu va întoarce ca și rezultat valoarea din dreapta. De aceea se recomandă să delimităm prin paranteze atunci când intenționăm să facem aceasta:

if (x = y) { /* .... */ } // nu se recomandă (e un typo sau nu??)

if ((x = y)) { /* .... */ } // se recomandă, se înțelege clar intenția

if ... else poate fi scris și cu operatorul terțar ?:, de exemplu:

let sign
if (x > 0) {
    sign = 'plus';
} else {
    sign = 'minus';
}

poate fi rescris:

const sign = x > 0 ? 'plus' : 'minus';

switch

Folosind un switch putem evalua o expresie, iar valoarea returnată să o comparăm cu diferite etichete pentru a rula afirmația asociată. Sintaxa:

switch (expression) {
  case label1:
    statements1
    [break;]
  case label2:
    statements2
    [break;]
    ...
  default:
    statementsDef
    [break]
}

putem observa pe break care este opțional și deobicei se adaugă la sfârșitul fiecărui case. Acest break va opri switch-ul, altfel, s-ar fi executat codul în continuare fără a se mai verifica case-ul. Exemplu:

switch (getCurentLang()) {
    case 'en':
        console.log('Welcome');
        break;
    case 'ro':
        console.log('Bună');
        break;
    default:
        console.log('Bonjour');
}

În această formă, un switch este un lanț de if ... else, dar scris mai compact.

// un switch scris cu if ... else
const check = 1;
if (check === 1 || check === 3) {
  document.write('impar');
} else if (check === 2) {
  document.write(2);
} else if (check === 4) {
  document.write(4);
} else {
  document.write('else');
}

// rescris cu switch
switch (check) {
  case 1:
  case 3:
    document.write('impar');
    break;
  case 2:
    document.write(2);
    break;
  case 4:
    document.write(4);
    break;
  default:
    document.write('else');
}

results matching ""

    No results matching ""