Garbanotinių skliaustų neprivalomumo problema if-else konstrukcijoje
Nepaisant to, kad JavaScript leidžia aukščiau parodytus sutrumpinimus su garbanotiniais skliaustais, aš paprastai nerekomenduoju taip daryti, nes tai yra sunkiai pastebimų klaidų šaltinis. Tarkime, pavyzdžiui, yra toks kodas:
let test = 3;
if (test > 0)
console.log(test);
Tarkime, kad dabar nusprendėme, jei
sąlyga tenkinama, išvesti ir antrą
pranešimą su tekstu '+++':
let test = 3;
if (test > 0)
console.log(test);
console.log('+++');
Tačiau, be garbanotinių skliaustų, sąlygos viduje yra tik pirmasis pranešimas. Tai yra, pirmoji eilutė bus vykdoma esant teisingai sąlygai, o antroji – visada.
Faktiškai mūsų kodas yra ekvivalentus šiam:
let test = 3;
if (test > 0) {
console.log(test);
}
console.log('+++'); // ši eilutė pasirodė už sąlygos ribų
O mes norėtume tokį kodą:
let test = 3;
if (test > 0) {
console.log(test);
console.log('+++'); // ši eilutė yra sąlygos viduje
}
Būtent todėl rekomenduojama visada dedti garbanotuosius skliaustus, kad nepatiktumėte į tokias klaidas.