Aaltosulkujen vapaaehtoisuuden ongelma if-else-lauseessa
Huolimatta siitä, että JavaScript sallii ylla näytetyt aaltosulkeiden lyhennykset, en yleensä suosittele niiden käyttöä, koska ne ovat vaikeasti havaittavien virheiden pesä. Oletetaan esimerkiksi, että on seuraava koodi:
let test = 3;
if (test > 0)
console.log(test);
Oletetaan nyt, että päätimme siinä tapauksessa, jos
ehto täyttyy, tulostaa myös toisen
viestin tekstillä '+++':
let test = 3;
if (test > 0)
console.log(test);
console.log('+++');
Kuitenkin ilman aaltosulkja ehtorakenteen sisällä on vain ensimmäinen viesti. Toisin sanoen ensimmäinen rivi toimii kun ehto on tosi, ja toinen - aina.
Koodimme on käytännössä vastaava kuin:
let test = 3;
if (test > 0) {
console.log(test);
}
console.log('+++'); // tämä rivi jäi ehdon ulkopuolelle
Mutta me halusimme tällaisen koodin:
let test = 3;
if (test > 0) {
console.log(test);
console.log('+++'); // tämä rivi on ehdon sisällä
}
Tästä syystä on suositeltavaa aina käyttää aaltosulkja, jotta ei joudu tällaisiin virheisiin.