Problém nepovinnosti složených závorek v if-else
Navzdory tomu, že JavaScript připouští výše uvedená zkrácení se složenými závorkami, já to obecně nedoporučuji dělat, protože to je semeniště těžko postižitelných chyb. Nechť je například následující kód:
let num = 3;
if (num > 0)
console.log(num);
Nechť jsme se nyní rozhodli, že v případě,
že je podmínka splněna, vypisovat ještě i druhou
zprávu s textem '+++':
let num = 3;
if (num > 0)
console.log(num);
console.log('+++');
Avšak, bez složených závorek je uvnitř podmínky pouze první zpráva. To znamená, že první řádek bude fungovat při splněné podmínce, a druhý - vždy.
Fakticky je náš kód ekvivalentní tomuto:
let num = 3;
if (num > 0) {
console.log(num);
}
console.log('+++'); // tento řádek se ocitl mimo podmínku
A my bychom chtěli takový kód:
let num = 3;
if (num > 0) {
console.log(num);
console.log('+++'); // tento řádek je uvnitř podmínky
}
Právě proto se doporučuje vždy provádět rozmístění složených závorek, aby člověk neupadl do chyb tohoto druhu.