Problem opcjonalności nawiasów klamrowych w if-else
Pomimo tego, że JavaScript dopuszcza pokazane powyżej skróty z nawiasami klamrowymi, ja generalnie nie polecam tak robić, ponieważ jest to wylęgarnia trudnych do wychwycenia błędów. Niech na przykład będzie następujący kod:
let num = 3;
if (num > 0)
console.log(num);
Załóżmy teraz, że postanowiliśmy, jeśli
warunek jest spełniony, wypisać jeszcze drugą
wiadomość z tekstem '+++':
let num = 3;
if (num > 0)
console.log(num);
console.log('+++');
Jednakże, bez nawiasów klamrowych wewnątrz warunku znajduje się tylko pierwsza wiadomość. Czyli pierwsza linia będzie się wykonywać przy prawdziwym warunku, a druga - zawsze.
Faktycznie nasz kod jest równoważny takiemu:
let num = 3;
if (num > 0) {
console.log(num);
}
console.log('+++'); // ta linia znalazła się poza warunkiem
A my chcielibyśmy taki kod:
let num = 3;
if (num > 0) {
console.log(num);
console.log('+++'); // ta linia jest wewnątrz warunku
}
Właśnie dlatego zaleca się zawsze stawiać nawiasy klamrowe, aby nie wpadać w tego rodzaju błędy.