JavaScripti if-else konstruktsioonides lokkis sulgude mittekohustuslikkuse probleem

Hoolimata asjaolust, et JavaScript võimaldab eelpool näidatud lühendeid lokkis sulgudega, soovitan ma üldiselt nii mitte teha, kuna see on raskesti tabatavate vigade pesapaik. Oletame näiteks, et on olemas järgmine kood:

javascriptlet test = 3;

if (test > 0)
  console.log(test);

Oletame nüüd, et otsustasime juhul, kui tingimus on täidetud, väljastada ka teise sõnumi tekstiga '+++':

javascriptlet test = 3;

if (test > 0)
  console.log(test);
  console.log('+++');

Siiski, ilma lokkis sulgudeta jääb tingimuse sisse ainult esimene sõnum. See tähendab, et esimene rida käivitub õige tingimuse korral ja teine - alati.

Tegelikult on meie kood samaväärne sellega:

javascriptlet test = 3;

if (test > 0) {
  console.log(test);
}

console.log('+++'); // see rida jäi tingimusest väljapoole

Kuid meie tahaksime sellist koodi:

javascriptlet test = 3;

if (test > 0) {
  console.log(test);
  console.log('+++'); // see rida on tingimuse sees
}

Just seetõttu on soovitatav alati teha lokkis sulgude paigutus, et mitte sattuda sellistesse vigadesse.