Deo zbornika Napredni Javaskript
Naredbe vs. izrazi
Izraz (en. expression) je vrednost koja se evaluira. Naredba (en. statement, doslovno izjava ili iskaz) je instrukcija računaru da nešto uradi. Razlikovanje naredbi i izraza je fundamentalno u računarskoj nauci.
Postoje prosti i složeni izrazi. Prosti se sastoje od jednog, a složeni od više članova, povezanih operatorima. Za razliku od izraza, koji samo nose vrednost, naredbe menjaju stanje sveta. Naredbe u C-u i sličnim jezicima se uvek završavaju tačka-zarezom;
Dve ili više naredbi mogu biti smeštene u blok unutar viličastih zagrada.
Primeri izraza
Svaki od navedenih redova koda je validan izraz u Javascriptu i mnogim drugim programskim jezicima:
2 + 2 // aritmeticki izraz
2 < 3 + 5 // logicki izraz
2 + 2 == 5
a + 4 * b
Math.min(2, 22)
"foo"
"Zdravo " + "Svete"
(x == 0) && (y == 0)
Math.PI
Neki navedeni izrazi daju aritmetičku, neki logičku, a neki tekstualnu vrednost. Npr, sledeći izraz daje logičku vrednost:
2 + 2 == 5
Funkcije mogu biti i naredbe i izrazi, zavisno od toga da li evaluiraju vrednost ili menjaju stanje sveta. Čiste funkcije su uvek izrazi.
Primeri naredbi
Svaki od navedenih redova je naredba, koja menja stanje sveta:
x = 5 // naredba dodele
zbir = 2 + 2 // naredba dodele vrednosti izraza
for (let i=0; i<5; i++) // naredba ciklusa
console.log('Ucini nesto') // naredba ispisa
i++ // naredba dodele
return 0; // naredba okoncanja funkcije i vracanja vrednosti
I izrazi mogu biti deo naredbi, kao kod naredbe if
, koja evaluira uslovni izraz:
if (3 < 5)
console.log('Ucini nesto')
Zamenljivost izraza i naredbi
Neke naredbe je moguće zameniti izrazima. Na primer, sledeću logiku:
let x
if (4 < 5)
x = 'Zdravo'
else
x = 'Dovidjenja'
console.log(x)
je moguće zameniti ternarnim operatorom:
const x = 4 < 5 ? 'Zdravo' : 'Dovidjenja'
console.log(x)
Kao što vidimo, favorizovanje izraza umesto naredbi vodi nas upotrebi nepromenljivih umesto promenljivih u programiranju.
Imperativno vs. funkcionalno programiranje
Imperativno programiranje, kao što naziv implicira, se pretežno oslanja na naredbe. Klasičan primer ove paradigme je programski jezik C, čiji programi se redovno sastoje iz niza naredbi koje treba izvršiti.
#include <stdio.h>
int main(int argc, char *argv[]) {
int elems[5] = {1, 2, 3, 4, 5}; // naredba dodele
int total = 0; // naredba dodele
int i; // naredba deklaracije
// | naredba
// | | naredba
// v v
for (i = 0; i < 5; i++) {
total += elems[i]; // naredba dodele
}
printf("%d\n", total); // naredba ispisa
return 0; // naredba vracanja vrednosti
}
Na drugom kraju spektra je Haskell, funkcionalni jezik koji se snažno oslanja na izraze. Za razliku od imperativnog programiranja, funkcionalno programiranje naglašava evaluaciju funkcijskih izraza umesto izvođenja niza naredbi.
Literatura
- Dr. Axel Rauschmayer, Expressions versus statements in JavaScript