marți, 4 noiembrie 2008

Sintaxa JavaScript partea 2/2

Interfete Web

Partea 1 a tutorialului o aveti la adresa: http://interfetze.blogspot.com/2008/11/sintaxa-javascript-partea-12.html

Nivel de dificultate: mediu

5. Operatorii:

În JavaScript, operatorii sunt în mare parte identici cu cei din C şi C++, şi anume:

a) operatori aritmetici:

operatorul de atribuire =
adunare +
scădere -
înmulţire *
împărţire /
modulo % (returnează câtul unei împărţiri întregi)
operatorul de incrementare ++ (adună 1 la valoarea operandului)
operatorul de decrementare -- (scade 1 din valoarea operandului)

Notă: operatorii de incrementare şi decrementare sunt operatori unari (necesită un singur operand), în timp ce toţi ceilalti sunt binari (lucrează cu doi operanzi). Ordinea de executare a operaţiilor este cea cunoscută din matematica clasica: operaţiile se execută de la stânga spre dreapta, cu operaţiile de înmulţire şi împărţire prioritare asupra adunării şi scăderii.

Operatorii ++ şi -- necesită puţină atenţie suplimentară, întrucât comportamentul lor diferă în funcţie de poziţia operatorului în raport cu operandul său. Astfel, considerând codul:

var a = 5;
if (a++> 5) a = 10; 


La rularea acestui script, valoarea lui a la final va fi 6, nu 10. De ce? Ei bine, poziţia operatorului ++ este după operand, ceea ce înseamnă că operaţia de incrementare va fi ultima din blocul său de operaţii, care în acest caz mai conţine comparaţia variabilei cu constanta 5. Adică întâi se compară, după care a se incrementează la 6. Efectuând însă doar o modificare minoră la cod, datele problemei se schimbă: 

if (++a> 5) a = 10; 

Rulând acest script, a va lua valoarea 10, deoarece în acest caz incrementarea se va efectua înaintea comparaţiei, moment în care a va avea valoarea 6, condiţia fiind îndeplinită.

b) operatori de comparaţie:

mai mic strict <>
mai mare sau egal >=
egal ==
diferit !=
strict egal ===
strict diferit !==

Atenţie! Reţineţi că operatorul care verifică dacă două valori sunt egale este reprezentat de un dublu semn 'egal' (==), 'egal'-ul simplu fiind operatorul de atribuire. Evitaţi confuzia între aceşti doi operatori!

Diferenţa dintre == şi ===, respectiv dintre != şi !==, este că la cele din urmă, typecasting-ul nu mai este efectuat înainte de comparaţie. 
Cu alte cuvinte, 5 == '5' va returna true, în timp ce 5 === '5' va returna false.

c) operatori logici - folosiţi în combinarea de valori logice (adevărat/fals): 

şi logic &&
sau logic ||
negare (non logic) !

Aceşti operatori se folosesc cel mai des în cazul combinării mai multor condiţii, în bucle sau structuri condiţionale. Spre exemplu:

if (a>= 4 && a <= 10) b = 7; else b = 10; 

În acest caz, variabila b va avea valoarea 7 doar atunci când a aparţine intervalului 4 - 10, orice altă valoare a lui a rezultând în atribuirea valorii 10 lui b.

6. Variabilele

În JS, variabilele nu trebuie declarate explicit. Declararea unei valori este echivalentă cu prima asignare de valoare identificatorului corespunzător. Până la acel moment identificatorul respectiv nu exista în structura script-ului, deci orice referire la el va genera o eroare:

var a = 0; // identificatorul 'a' devine accesibil
if (a == b) a = 1; // va genera o eroare, întrucât
// identificatorul 'b' nu exista în program 


Precedarea primei declarări a unei variabile cu cuvântul-cheie var e opţională, însă e recomandată din motive de compatibilitate, motoarele de interpretare a JavaScript-ului implementate în unele browsere necesitând acest cuvânt-cheie. 
După cum am mai spus, interpretorul JavaScript realizează typecasting-ul (conversia între tipuri) în mod automat, debarasând programatorul de această sarcină. Astfel, dacă rulăm următoarea secvenţă de cod, variabila v se va modifica conform comentariilor: 

var v = 2; // se initializează variabila v sub forma numărului întreg 2
v += 1.4; // v devine un număr real cu valoarea 3.4
v += '5'; // v se transformă într-un string, cu valoarea '3.45' 


Atenţie! Observăm aici două proprietăţi specifice JavaScript-ului:
- pentru concatenarea ('alipirea') cifrei '5' la variabila v, am folosit tot operatorul de adunare +, deoarece în JavaScript, + mai reprezintă şi operator de concatenare de şiruri de caractere. Reţineţi-l, deoarece îl veţi folosi destul de des.
- în ciuda aparenţelor, rezultatul ultimei operaţii nu este numărul real 8.4, ci un string (şir de caractere), cu valoarea '3.45'. Asta se întâmplă deoarece în JavaScript, typecasting-ul se desfăşoară prioritar în direcţia unui rezultat de tip string. Reţineţi şi această anomalie, întrucât, după cum vom vedea în tutorialele viitoare, majoritatea proprietăţilor obiectelor DOM-ului sunt reţinute în variabile de tip string.

Sursa: www.tutoriale.far-php.ro

Niciun comentariu: