CUPRINS> Operatorii JavaScript. Obiecte matematice INTRO
INAPOI INAINTE


În această conversație:

Operatorii JavaScript
Asociativitatea și prioritatea operatorilor
Obiecte matematice
Obiectul Math
Obiectul Number
Obiectul Boolean
EXEMPLUL 2 JAVASCRIPT (continuare)
Temă


 
  Operatorii JavaScript    
     

Pentru a crea programe utile JavaScript, trebuie să evaluați sau chiar să modificați datele pe care le prelucrează script-urile dumneavoastră. Instrumentele necesare pentru realizarea acestor operații se numesc operatori.
Operatorii [1] sunt simbolurile și identificatorii care reprezintă fie felul în care sunt modificate datele, fie felul în care este evaluată o combinație de expresii. JavaScript recunoaște atât operatorii binari (necesită existența a doi operanzi în expresie) cât și operatorii unari (necesită existența unui singur operand în expresie).

Cei mai mulți dintre operatorii JavaScript sunt recunoscuți de către toate navigatoarele, dar ... mai există și divergențe!
În continuare, vom proceda la o clasificare a operatorilor din limbajul JavaScript urmând ca apoi să-i examinăm pe fiecare în parte (vezi figura 2.50).

Figura 2.50
Tipuri de operatori
Operatorii JavaScript
aritmetici
% (modulo); ++ (increment); - - (decrement); + (adunare); - (scadere); * (înmultire); / (împartire)
atribuire plus combinatii (între operatorul de atribuire si operatorii aritmetici)
= (atribuire simpla); += (atribuire cu adunare); -= (atribuire cu scadere); *= (atribuire cu înmultire); /= (atribuire cu împartire); %= (atribuire cu modulo)
relationali (de comparatie)
< (mai mic); > (mai mare); <= (mai mic sau egal); >= (mai mare sau egal); == (egalitate); === (identitate); != (non egal); !== (non identic)
booleeni (logici) && (AND); || (OR); ^ (SAU EXCLUSIV); ! (NOT)
operatori pentru functii (); , (virgula)
operatori pentru structuri
de date
. (punctul); []
operatori conditionali ?:
operatori pentru siruri toti operatorii relationali (de comparatie) si operatorul de concatenare (+)
operatorul typeof
operatorul delete
operatorul new
operatorul void
 

Operatorii JavaScript sunt prezentați în detaliu în figura 2.51.

Figura 2.51
 
Operator
Sintaxa
+ operand1 + operand2
Descriere Adunare sau concatenare.
1. Tip de date: numeric.
- Operator aritmetic.
Remarca. Daca unul din operatori este NaN, rezultatul este NaN.

2. Tip de date: alfanumeric (sir de caractere).
- Operator de concatenare.
Remarca. Operatorul + serveste în general pentru efectuarea convertirii tuturor tipurilor de date în siruri de caractere.
Exemplu
<script>
   a=8;
   b=7;
   z=3+8;
   c=a+b;
   alert(z); // afiseaza 11
   alert(c); // afiseaza 15
</script>
<script>
   prenume="Vasile";
   nume="Adam";
   numecomplet="Domnul "+
   prenume+" "+nume;
   alert(numecomplet);
   //afiseaza Domnul Vasile Adam
</script>
  += operand1 += operand2
Descriere Adunare sau concatenare asociata unei atribuiri.
1. Tip de date: numeric.
- Operator aritmetic si de atribuire.
Remarca. Echivalent cu: operand1= operand1 + operand2.

2. Tip de date: alfanumeric.
- Operator de concatenare si de atribuire.
Remarca. Continutul variabilei situate la stânga operatorului este completat cu data alfanumerica din dreapta operatorului.
Exemplu
<script>
   a=3;
   a+=6;
   alert(a);
   //afiseaza 9
</script>
<script>
   numecomplet="Dumitrescu";
   nume="Vasile";
   numecomplet+=nume;
   alert(numecomplet);
   // afiseaza Dumitrescu Vasile
</script>
  ++ ++ operand
operand++
Descriere Incrementare.
1. Tipul de date: numeric.
- Operator aritmetic.
Remarci:
- Pre-incrementare (++ operand): valoarea variabilei este marita cu 1, apoi este utilizata.
- Post-incrementare (operand ++): valoarea variabilei este utilizata apoi este marita cu 1.
- Este imposibil de a combina post-incrementarea cu pre-incrementarea.
- Acest operator se aplica numai variabilelor. Este foarte des utilizat în bucle.
- Este echivalent cu: operand1= operand1 + operand2.
- ++x++ returneaza un mesaj de eroare.
- x++ este echivalent cu: x=x+1.
Exemplu
<script>
   //post-incrementare
   a=5;
   alert(a++);
   // afiseaza 5
   alert(a);
   //afiseaza 6
</script>
<script>
   //pre-incrementare
   a=5;
   alert(++a);
   // afiseaza 6
   alert(a);
   //afiseaza 6
</script>
<script>
   //post-incrementare într-o bucla
   for(i=0;i<5; i++){
      document.write(i);
      // afiseaza 0 1 2 3 4
   }
</script>

  - operand1 - operand2
Descriere

Scadere sau negare.
1. Tipul de date: numeric.
- Operator aritmetic.

2. Operator de negare.
Converteste o valoare pozitiva într-o valoare negativa.

Exemplu
<script>
   a=20;
   b=13;
   c=a-b;
   d=8-2;
   alert(d); // afiseaza 6
   alert(c); // afiseaza 7
</script>
<script>
   a=-7;
   a=-a;
   alert(a);
   // afiseaza 7
</script>
  -= operand1 -= operand2
Descriere Tipul de date: numeric.
- Operator aritmetic si de afectare.
Remarca. Este echivalent cu: operand 1= operand 1 - operand 2.
Exemplu <script>
   a=4;
   a-=6;
   alert(a); // afiseaza -2
</script>
  - - operand - -
- - operand
Descriere Decrementare.
1. Tipul de date: numeric.
- Operator aritmetic.
:
Remarci
- Pre-decrementare (-- operand): valoarea variabilei este diminuata cu 1 si apoi este evaluata.
- Post-decrementare (operand --): valoarea variabilei este evaluata apoi este diminuata cu 1.
- Acest operator se aplica numai variabilelor. Este des utilizat în bucle.
- Este echivalent cu: operand1= operand1 - 1.
- x- - este echivalent cu x=x-1.
Exemplu
<script>
   //post-decrementare    
   a=5;
   alert(a--);//afiseaza 5
   alert(a);// afiseaza 4
</script>
<script>
   //pre-decrementare
   a=5;
   alert(--a); //afiseaza 4
   alert(a)// afiseaza 4
</script>
<script>
   //post-decrementare în bucla for
   for(a=7;a<=1; a--){
   document.write(a);
   // afiseaza 6 5 4 3 2 1
</script>
  * operand1 * operand2
Descriere Înmultire.
1. Tipul de date: numeric.
- Operator aritmetic.
Exemplu <script>
   a=7;
   b=8;
   c=3*6;
   d=a*b;
   alert(c); // afiseaza 18
   alert(d); // afiseaza 56
</script>
  *= operand1 *= operand2
Descriere Înmultire si atribuire.
1. Tipul de date: numeric.
- Operator aritmetic si de atribuire.

Remarca. Este echivalent cu: operand1= operand1 * operand2.
Exemplu <script>
   a=2;
   a*=5;
   alert(a); // afiseaza 10
</script>
  / operand1 / operand2
Descriere Împartire.
1. Tipul de date: numeric.
- Operator aritmetic.

Remarci:
- Daca unul din operanzi este NaN, rezultatul este NaN.
- Împartirea 0/0 da NaN.
- Împartirea 0/valoare_finita da 0.
Exemplu <script>
   a=12; b=3;
   c=5/2; d=a/b;
   alert(c); // afiseaza 2.5
   alert(d); // afiseaza 4
</script>
  /= operand1 /= operand2
Descriere Împartire si atribuire.
1. Tipul de date: numeric.
- Operator aritmetic si de atribuire.

Remarca. Este echivalent cu: operand1= operand1 / operand2.
Exemplu
<script>
   a=5;
   a/=2;
   alert(a);
   // afiseaza 2.5
</script>
< echivalent cu > <script>
   a=5;
   a=a/2;
   alert(a);
   // afiseaza 2.5
</script>
  % operand1 % operand2
Descriere Modulo.
1. Tipul de date: numeric.
- Operator aritmetic.

Remarca
. Calculeaza restul întreg al împartirii întregi a primului numar prin cel de-al doilea numar.
Exemplu <script>
   a=18;
   a=a%5;
   alert(a); // afiseaza 3
</script>
  %= operand1 %= operand2
Descriere Modulo si afectare.
1. Tipul de date: numeric.
- Operator aritmetic si de afectare.

Remarca. Este echivalent cu: operand1= operand1 % operand2.
Exemplu
<script>
   a=18;
   a%=5;
   alert(a);// afiseaza 3
</script>
< echivalent cu > <script>
   a=18;
   a=a%5;
   alert(a); // afiseaza 3
</script>
  = Variabila = Valoare
Descriere Atribuire.
1. Tipul de date: numeric, alfanumeric si logic.

Remarca
. A nu se confunda cu operatorul ==.
Exemplu
<script>
   a=20;
   nume="Droopy";
   b=a+3; //b are valoarea 23
</script>
<script>
   //atribuire multipla
   var a=b=c=13;
   // cele trei variabile vor avea aceeasi valoare: 13
</script>
  < operand1 < operand2
Descriere Strict mai mic.
1. Tipul de date: numeric, alfanumeric si logic.
- Operator relational (de comparare).

Remarci:
- Se returneaza TRUE, daca rezultatul evaluarii conditiei este adevarat.
- Se returneaza undefined daca una din valorile care se compara este NaN.
- În cazul compararii valorilor alfanumerice se ia în considerare codul ISO.
  <= operand1 <= operand2
Descriere Mai mic sau egal.
1. Tipul de date: numeric, alfanumeric si logic.
- Operator relational (de comparare).

Remarci:
- Se returneaza TRUE daca rezultatul evaluarii conditiei (operand1 <= operand2) este adevarat.
- Se returneaza undefined daca una din valorile care se compara este NaN.
- În cazul compararii valorilor alfanumerice se ia în considerare codul ISO.
Exemplu <script>
   a=6; b=6;
   document.write(a<=b);
   //afiseaza true
   nume1= "MARK"; nume2="SPENCER";
   document.write("<br />"+nume1<;=nume2);
   // afiseaza true
</script>
  > operand1 > operand2
Descriere Strict mai mare.
1. Tipul de date: numeric, alfanumeric si logic.
- Operator relational (de comparare).

Remarci
:
- Se returneaza TRUE daca rezultatul evaluarii conditiei (operand1>operand2) este adevarat.
- Se returneaza undefined daca una din valorile care se compara este NaN.
- În cazul compararii valorilor alfanumerice se ia în considerare codul ISO.
Exemplu <script>
   a=6; b=6;
   document.write(a>b); //afiseaza false
   nume1= "MICIURIN"; nume2="POLEVOI";
   document.write("<br />"+nume1>nume2); // afiseaza false;
</script>
  >= operand1 >= operand2
Descriere Mai mare sau egal.
1. Tipul de date: numeric, alfanumeric si logic.
- Operator relational (de comparare).

Remarci:
- Se returneaza TRUE daca rezultatul evaluarii conditiei (operand1 >= operand2) este adevarat.
- Se returneaza undefined daca una din valorile care se compara este NaN.
- În cazul compararii valorilor alfanumerice se ia în considerare codul ISO.
Exemplu <script>
   a=7;
   document.write(a>=7); //afiseaza true
   nume1= "M1"; nume2="P1";
  document.write("<br />"+nume1>=nume2); // afiseaza false
</script>
  == operand1 == operand2
Descriere Egal cu.
1. Tipul de date: numeric, alfanumeric si logic.
- Operator relational (de comparare).

Remarci:
- Se returneaza TRUE daca rezultatul evaluarii conditiei (operand1 este egal cu operand2) este adevarat.
- Se returneaza undefined daca una din valorile care se compara este NaN.
- În cazul compararii valorilor alfanumerice se ia în considerare codul ISO.
- Compararea unei valori numerice (de exemplu, 7) cu o aceeasi valoare alfanumerica (de exemplu, "7") returneaza TRUE.
Exemplu <script>
   a=6; b=7; nume="MIRCEA";
   document.write(nume==a); // afiseaza false;
   document.write("<br />");
   document.write(a=='6'); // afiseaza true;
   document.write("<br />");
   document.write(a==b'); // afiseaza false;
</script>
  === operand1 === operand2
Descriere Identic cu.
1. Tipul de date: numeric, alfanumeric si logic.
- Operator relational (de comparare): egalitate de valori si de tip de date.

Remarca. Se returneaza TRUE daca rezultatul evaluarii conditiei (operand1 este egal cu operand2 si de acelasi tip de date) este adevarat.
Exemplu <script>
   a="7"; b=7;
   nume1="MAXITAXI";
  document.write(nume1==a); // afiseaza false;
   document.write("<br />"+(a===b)); // afiseaza false
   document.write("<br />"+(nume1==="maxitaxi"); // afiseaza false;
   document.write("<br />"+(nume1==="MAXITAXI")); // afiseaza true;
</script>
  != operand1 != operand2
Descriere Diferit de.
1. Tipul de date: numeric, alfanumeric si logic.
- Operator relational (de comparare): non-egalitate de valori.

Remarca
. Se returneaza TRUE daca rezultatul evaluarii conditiei (operand1 este diferit de operand2) este adevarat.
Exemplu <script>
   a="7"; b=7; c=8; nume1="Maxim";
   document.write(nume1!=a); // afiseaza true;
   document.write("<br />");
   document.write(a!=b); // afiseaza false;
   document.write("<br />");
   document.write(nume1!="maxim"); // afiseaza true;
   document.write("<br />"+(nume1!="Maxim")); // afiseaza false
   document.write("<br />"+(c!=a)); // afiseaza true
</script>
  !== operand1 !== operand2
Descriere Non identic cu.
1. Tipul de date: numeric, alfanumeric si logic.
- Operator relational (de comparare): non-egalitate de valoare si de tip de date.

Remarca. Se returneaza TRUE daca rezultatul evaluarii conditiei (operand1 nu este egal si nici de acelasi tip cu operand2) este adevarat.
Exemplu <script>
   a="7"; b=7; nume1="Maxim";
   document.write(nume1!==a); // afiseaza true;
   document.write("<br />");
   document.write(a!==b); // afiseaza true;
   document.write("<br />");
   document.write(nume1!=="maxim"); // afiseaza true;
   document.write("<br />"+(nume1!=="Maxim")); // afiseaza false
</script>
  && operand1 && operand2
Descriere SI.

Remarci:
- Operator logic SI (AND).
- Returneaza TRUE daca cele doua expresii returneaza valoarea TRUE.
- Acest operator este foarte des utilizat în bucle (for, while) si în teste (if ... else).
Exemplu <script>
   a=4; b=6; nume1="Maxim";
   document.write((a>2)&&(b==6)); // afiseaza true;
   document.write("<br />");
   document.write((a>;2)&&(b==nume1)); // afiseaza false;
</script>
Exemplu <script>
   a=4;b=6;nume1="Maxim";
   if((a>2)&&(b==6)){
      document.write("a este mai mare ca 2");
      document.write(" si b este egal cu 6");
}
</script>
  || operand1 || operand2
Descriere SAU (OR).

Remarci:
- Operator logic SAU (OR).
- Returneaza TRUE daca una din cele doua expresii returneaza valoarea TRUE.
- Acest operator este foarte des utilizat în bucle (for, while) si teste (if ... else).
Exemplu <script>
   a=4; b=6; nume1="Maxim";
   document.write((a>2)||(b==6)); // afiseaza true
   document.write("<br />");
   document.write((a>2)||(b==nume1)); // afiseaza false
</script>
Exemplu <script>
   a=4;b=6;nume1="Maxim";
   if((a>2)||(b==6)){
      document.write("a este mai mare ca 2");
      document.write(" sau b este egal cu 6");
   }
</script>
  , (virgula)  
Descriere Operator care permite mai multor instructiuni de a fi executate ca si când ar fi o singura instructiune.

Remarci:
- Valoarea returnata este cea care apartine ultimei instructiuni.
- Acest operator este utilizat de asemenea pentru transferarea mai multor parametrii unei functii.
Exemplu <script>
  var a,b,c,d;
   a=(b=5,c=6,d=7);
   document.write("a="+a); // afiseaza a=7;
   document.write("<br />");
   document.write("b="+b); // afiseaza b=5;
   document.write("<br />");
   document.write("c="+c); // afiseaza c=6;
   document.write("<br />");
   document.write("d="+d); // afiseaza d=7;
</script>
  ?: conditie1 ? cod1:cod2
Descriere Conditie.
1. Tipul de date: numeric, alfanumeric si logic.
- Operator de test (conditie).

Remarci:
- Este utilizat pentru a crea un test rapid sub forma: expresielogica ? DacaDa: DacaNu.
- Expresielogica este o expresie care returneaza TRUE sau FALSE.
- DacaDa: instructiune care va fi executata daca rezultatul evaluarii expresielogica este TRUE.
- DacaNu: instructiune care va fi executata daca rezultatul evaluarii expresielogica este FALSE.
Exemplu
<script>
   a=2;
   (a>10)?alert("adevarat"):alert("false");
</script>
< echivalent cu > <script>
   a=2;
   if(a>10)
      alert("adevarat");
   else
      alert("false");
</script>
  delete delete obiect
delete obiect.Proprietate
delete Array[Index]
Descriere Stergere.
1. Tipul de date: obiect.
- Operator de stergere a proprietatii obiectului.

Remarci:
- Sterge o proprietate a unui obiect creat cu new.
- Sterge un element al unei matrici (Array) indicând numarul sau de ordine (primul element este de rang zero).
Exemplu
<script>
   //stergerea unui element al unei matrici
   var v=new Array(1,2,3,7);
   document.write(v);
   //afiseaza 1,2,3,7
   delete v[2];
   //este sters al 3-lea element
   document.write(v);
   //afiseaza 1,2,7
</script>
<script>
   azi=new Date();
   //stergerea unui obiect
   x=delete azi;
   // x ia valoarea true si azi este undefined
</script>
Exemplu <script>
   //Stergerea unei proprietati a unui obiect
   a=new Number();
   a.valoare=13;
   x=delete a.valoare;
   //x ia valoarea true si a.valoare este nedefinit
</script>
  new obiect= new Constructor
Descriere Nou.
1. Tipul de date: obiect.
- Operator de creare a unui nou obiect.

Remarci:
- Creeaza o noua instanta a unui obiect cu ajutorul unui constructor.
- new este utilizat pentru crearea instantelor urmatoarelor obiecte: Array; Boolean; Date; Function, Number; Object; RegExp; String.
Exemplu <script>
   //crearea obiectului astazi
   var astazi=new Date();
   //crearea obiectului matrice
   var matrice=new Array();
   //crearea obiectului Object
   var obiect=new Object();
   obiect.prenume="stejarel"
</script>
  . (punct) obiect.Proprietate
obiect.Metoda
obiect.Eveniment
Descriere Punctul (.) este utilizat pentru a putea accesa proprietati, metode sau evenimente ale unui obiect.
1. Tipul de date: obiect.
- Operator de acces.
Exemplu <script>
   //acces la metoda write() a obiectului document
   document.write("Au înnebunit salcâmii!");
</script>
  typeof typeof(operand)
typeof operand
Descriere Tipul de date.

Remarci:
- Returneaza sub forma de sir de caractere tipul de date al obiectului sau al variabilei indicate.
- În tabelul 1 se prezinta pe doua coloane: tipul de data si sirul de caractere returnat de Typeof.
 
Tabelul 1
Tipul de data
Sirul de caractere returnat de typeof
logic
boolean
numar
number
infinit
number
sir de caractere string
obiect object
functie function
nedefinit undefined
null object

Exemplu <script>
   a=7; nume="salcam";
   document.write(typeof a); //afiseaza number
   document.write("<br />"+typeof(nume)); // afiseaza string
</script>
  void void Expresie
void(Expresie)
Descriere Nedefinit. Evalueaza o expresie si returneaza ca rezultat undefined.
Exemplu <body>
   <a href="JavaScript: void(alert('Au innebunit salcamii!'))"> Iar au innebunit salcamii</a>
</body>
  ( ) Function(Argumente)
Descriere Utilizat pentru invocarea metodei unui obiect sau parametrii unei functii.
1. Tipul de date: obiect.
- Operator de invocare.
Exemplu <script>
   /*Argumentul "Bine ati venit!" este transmis metodei write() a obiectului Document*/
   document.write("Bine ati venit!");
   /*argumentele 8,10 sunt transmise functiei media()
   media(8,10);
</script>
  [ ] matrice[ ]
obiect["Proprietate"]
Descriere Utilizat pentru accesarea unei proprietati a unui obiect sau a unui element al unei matrici.
1. Tipul de date: obiect.
- Operator de matrice.
Exemplu <script>
   //acces la elementele unei matrici
   var matrice=[7,5,3,1];
   document.write(matrice[0]);
   document.write("<br />");
   //afiseaza 7
   document.write(matrice[2]);
   document.write("<br />"); //afiseaza 3
</script>
  ! !Operand
Descriere Operator logic (NOT). Returneaza TRUE daca data este FALSE si invers.
Exemplu <script>
   a=true; alert(!a); //afiseaza FALSE
<script>
Exemplu <script>
   a=5;b=6;
   alert(!(a>b)); //afiseaza TRUE
</script>
  ^ operand1 ^ operand2
  Operator logic SAU exclusiv. Returneaza TRUE daca una si numai una din expresii returneaza TRUE.
Exemplu <script>
   a=4; b=6;
   if((a>2)^(b==6)){
      document.write("sau a>2 sau b=6");
   }
</script>

top
 
  Asociativitatea și prioritatea operatorilor    
     

Asociativitatea indică sensul ( sau ) în care expresia care conține operatorul este evaluată.
Prioritatea (precedența) indică ordinea în care expresiile sunt evaluate.
În figura 2.52 ([2]) sunt prezentați toți operatorii JavaScript cu precizarea asociativității și priorității acestora.

Figura 2.52
Rang de prioritate
Operatori
Asociativitate Semnificatie
1
.
acces la proprietati
2
[ ]
acces la matrici (arrays)
3
( )
regrupare sau functie
4 ++ incrementare
5 - - decrementare
6 - negare aritmetica
7 ! NOT logic
8 delete stergerea unei proprietati sau a valorii unei matrici
9 new crearea unui obiect
10 typeof determinarea tipului de date
11 void evaluarea fara returnarea valorii
12 * / % înmultire, împartire, modulo
13 + - adunare, scadere
14 + concatenare
15 < <= mai mic, mai mic sau egal
16 > >= mai mare, mai mare sau egal
17 == egal
18 != diferit
19 === identic (egalitate de valori si de tip)
20 !== non-identic
21 && SI
22 || SAU
23 ?: conditie
24 = afectare (atribuire/asignare)
25 *= /= %= +=-= afectare cu calcul
26 , evaluare multipla

Remarcă

Expresiile sunt evaluate în funcție de prioritatea operatorilor.
Parantezele au o prioritate foarte ridicată. Expresiile din paranteze sunt evaluate primele. Dacă există mai multe nivele de paranteze, expresiile sunt evaluate începând cu parantezele aflate cel mai în interior.
Asociativitatea joacă un rol, de exemplu, în cazul combinării unei adunări și unei concatenări (vezi figura 2.53).

Figura 2.53

top
 
  Obiecte matematice    
     

Cu siguranță că veți avea nevoie în programele dumneavoastră de formule matematice care să nu folosească doar simple adunări și înmulțiri. În acest caz, obiectele matematice: Math, Number, Boolean vă pot fi de un real folos.
Ele vă permit să accesați constante (, true, false) și să executați diferite funcții matematice (sqrt(); exp() etc.).

Math este un obiect predefinit al limbajului JavaScript care conține numeroase constante (PI, E, LN10, LN2, SQRT2 etc.) și funcții (abs(); floor(); pow(); sqrt() etc.).
Nu este nevoie să creați obiectul Math: el se creează în mod automat de către navigator (există în toate programele JavaScript). Proprietățile obiectului Math sunt constante matematice iar metodele sale sunt funcții matematice.

Number, cel de-al doilea obiect matematic, este un obiect predefinit al limbajului JavaScript pe care îl veți găsi util atunci când trebuie să accesați anumite constante: cel mai mare și cel mai mic număr care poate fi reprezentat; plus și minus infinit; NaN (Not a Number). JavaScript reprezintă aceste valori ca proprietăți ale obiectului Number.

Pentru a crea un nou obiect Number, utilizați funcția specială numită constructor, Number() și cuvântul cheie new (figura 2.54).

Figura 2.54

Boolean este un alt obiect predefinit al limbajului JavaScript pe care îl veți găsi util atunci când doriți să transformați o valoare non-booleană într-o valoare booleană (true sau false).

Pentru a crea un nou obiect Boolean utilizați constructorul Boolean() și cuvântul cheie new.

top
 
  Obiectul Math    
     

Fișa obiectului Math este prezentată în figura 2.55.

Figura 2.55
Fisa obiectului Math
Cum cream obiectul? Se creeaza automat de catre navigator.
Proprietati: E, LN10, LN2, LOG10E, LOG2E, PI, SQRT1_2, SQRT2
Metode: abs(), acos(), asin(), atan(), ceil(), cos(), exp(), floor(), log(), max(), min(), pow(), random(), round(), sin(), sqrt(), tan()
Gestionarii de evenimente: -

Proprietățile obiectului Math

Proprietățile obiectului Math sunt prezentate în detaliu în figura 2.56.

Figura 2.56
 
Proprietate
Sintaxa
E Math.E
Descriere Constanta lui Euler.
Exemplu <script>
   document.write(Math.E);
   //afiseaza 2.71821828459045
</script>
  LN10 Math.LN10
Descriere Logaritm natural de 10.
Exemplu <script>
   document.write(Math.LN10);
   //afiseaza 2.30258509294046
</script>
  LN2 Math.LN2
Descriere Logaritm natural de 2.
Exemplu <script>
   document.write(Math.LN2);
   //afiseaza 0.6931471805599453
</script>
  LOG10E Math.LOG10E
Descriere

Logaritm în baza 10 din e.

Exemplu <script>
   document.write(Math.LOG10E);
   //afiseaza 0.4342944819032518
</script>
  LOG2E Math.LOG2E
Descriere Logaritm în baza 2 din e.
Exemplu <script>
   document.write(Math.LOG2E);
   //afiseaza 1.4426950408889633
</script>
  PI Math.PI
Descriere Constanta PI.
Exemplu <script>
   document.write(Math.PI);
   //afiseaza 3.141592653589793
</script>
  SQRT1_2 Math.SQRT1_2
Descriere
Exemplu <script>
   document.write(Math.SQRT1_2);
   //afiseaza 0.7071067811865476
</script>
  SQRT2 Math.SQRT2
Descriere
Exemplu <script>
   document.write(Math.SQRT2);
   //afiseaza 1.4142135623730951
</script>

Metodele obiectului Math

Metodele cele mai frecvent folosite ale obiectului Math sunt prezentate în detaliu în figura 2.57.

Figura 2.57
 
Metoda
Sintaxa
abs() Math.abs(ValoareNumerica)
Descriere Valoare absoluta.

Remarca. În Tabelul 2 se prezinta rezultatele functiei abs() pentru câteva argumente speciale.

Tabelul 2
Argument
Rezultat
abs(0)
0
abs(NaN)
NaN
abs(-Infinity)
+Infinity

Exemplu <script>
   a=-57; b=85;
   rez1=Math.abs(a);
   rez2=Math.abs(b);
   document.write("abs("+a+")="+rez1);
   //afiseaza abs(-57)=57
   document.write("<br />");
   document.write("abs("+b+")="+rez2);
   //afiseaza abs(85)=85
</script>
  acos() Math.acos(ValoareNumerica)
Descriere Arc cosinus.

Remarca. Pentru valori ale argumentului: >1; < -1; NaN rezultatul este NaN.
Exemplu <script>
  a=0.9965;
  rezultat=Math.acos(a);
  document.write("acos("+a+")="+rezultat);
</script>
  asin() Math.asin(ValoareNumerica)
Descriere Arc sinus.

Remarca
. În Tabelul 3 se prezinta rezultatele functiei asin() pentru câteva argumente speciale.

Tabelul 3
Argument
Rezultat
0
0
>1
NaN
<-1
NaN
NaN NaN

Exemplu <script>
   a=0.9965;
   rezultat=Math.asin(a);
   document.write("asin("+a+")="+rezultat);
</script>
  atan() Math.atan(ValoareNumerica)
Descriere

Arc tangenta.

Exemplu <script>
   a=0.9965;
   rezultat=Math.atan(a);
   document.write("atan("+a+")="+rezultat);
</script>
  ceil() Math.ceil(ValoareNumerica)
Descriere Numar întreg superior cel mai apropiat.

Remarca. În Tabelul 4 se prezinta câteva argumente speciale si rezultatul corespunzator.

Tabelul 4
Argument
Rezultat
+Infinity
+Infinity
Între -1 si 0
0
-Infinity
-Infinity
0 0
NaN NaN

Exemplu <script>
   a=-4.223;
   rezultat=Math.ceil(a);
   document.write("ceil("+a+")="+rezultat);
   //afiseaza ceil(-4.223)=-4
</script>
  cos() Math.cos(ValoareNumerica)
Descriere Cosinus.
Exemplu <script>
   a=0.9965;
   rezultat=Math.cos(a);
   document.write("cos("+a+")="+rezultat);
</script>
  exp() Math.exp(ValoareNumerica)
  Exponentiala.
Exemplu <script>
   a=5;
   rezultat=Math.exp(a);
   document.write("exp("+a+")="+rezultat);
</script>
  floor() Math.floor(ValoareNumerica)
Descriere Numar întreg inferior cel mai apropiat.
Exemplu <script>
   a=-4.223;
   rezultat=Math.floor(a);
   document.write("floor("+a+")="+rezultat);
   //afiseaza floor(-4.223)=-5
</script>
  log() Math.log(ValoareNumerica)
Descriere Logaritm.
Exemplu <script>
   a=5;
   rezultat=Math.log(a);
   document.write("log("+a+")="+rezultat);
   //afiseaza 1.609437912431002
</script>
  max() Math.max(ValoareNumerica1, ValoareNumerica2)
Descriere Valoare maxima.

Remarca. În Tabelul 5 se prezinta câteva argumente speciale ale metodei si rezultatele corespunzatoare.


Tabelul 5
Argument 1
Argument 2
Rezultat
Orice valoare
NaN
NaN
NaN
Orice valoare
NaN

Exemplu <script>
   a=7; b=13.336;
   rezultat=Math.max(a,b);
   document.write("max("+a+","+b+")="+rezultat);
   //afiseaza max(7,13.336)=13.336
</script>
  min() Math.min(ValoareNumerica1, ValoareNumerica2)
Descriere Valoarea minima.
Exemplu <script>
   a=7; b=13.336;
   rezultat=Math.min(a,b);
   document.write("min("+a+","+b+")="+rezultat);
   //afiseaza min(7,13.336)=7
</script>
  pow() Math.pow(ValoareNumerica1, ValoareNumerica2)
Descriere Returneaza ValoareNumerica1 la puterea ValoareNumerica2.

Remarca. În Tabelul 6 se prezinta câteva argumente speciale ale metodei si rezultatele corespunzatoare.

Tabelul 6
Argument 1
Argument 2
Rezultat
+0
<0
+Infinity
+Infinity
<0
0
+Infinity >0 +Infinity
-Infinity <0 0
-Infinity întreg par>0 +Infinity
-Infinity întreg impar>0 -Infinity
0 >0 0
1 orice valoare 1
Orice valoare NaN NaN
NaN Diferit de zero NaN

Exemplu <script>
   a=3; b=2;
   rezultat=Math.pow(a,b);
   document.write("pow("+a+","+b+")="+rezultat);
   //afiseaza pow(3,2)=9
</script>
  random() Math.random()
Descriere Numere aleatoare. Returneaza un numar aleator cuprins între 0 si 1.
Exemplu
<script>
   /*genereaza 3 numere aleatoare cuprinse între 0 si 1*/
   for(i=0;i<3;i++){
      a=Math.random();
      document.write(a+"<br />");
   }
</script>
<script>
   /*genereaza 4 numere aleatoare cuprinse între 0 si 25*/
   for(i=0;i<5;i++){
      a=Math.round(Math.random()*25);
      document.write(a+"<br />");
   }
</script>
Exemplu <script>
   /*genereaza 5 numere aleatoare cuprinse între 12 si 48*/
   var n=12; var m=48;
   for(i=0;i<5;i++){
      a=Math.round(Math.random()*(m-n)+n);
      document.write(a+"<br />");
   }
</script>
  round() Math.round(ValoareNumerica)
Descriere Returneaza valoarea numerica rotunjita la întregul inferior.

Remarca. În Tabelul 7 se prezinta câteva argumente speciale ale metodei si rezultatele corespunzatoare.

Tabelul 7
Argument
Rezultat
+Infinity
+Infinity
0
0
NaN NaN

Exemplu <script>
   x=-5.88; y=8.336;
   rezultat1=Math.round(x);
   rezultat2=Math.round(y);
   rezultat3=Math.round(z);
  document.write("round("+x+")="+rezultat1);
   //afiseaza round(-5.88)=-6
   document.write("round("+y+")="+rezultat2);
   //afiseaza round(8.336)=8
</script>
  sin() Math.sin(ValoareNumerica)
Descriere Sinus.
Exemplu <script>
   a=0.9965;
   rezultat=Math.sin(a);
   document.write("sin("+a+")="+rezultat);
   //afiseaza sin(0.9965)=0.8395747765937453
</script>
  sqrt() Math.sqrt(ValoareNumerica)
Descriere Radacina patrata.

Remarca. În Tabelul 8 se prezinta câteva argumente speciale ale metodei si rezultatele corespunzatoare.

Tabelul 8
Argument
Rezultat
+Infinity
+Infinity
0
0
<0 NaN
NaN NaN

Exemplu <script>
   a=25;
   rezultat=Math.sqrt(a);
   document.write("sqrt("+a+")="+rezultat); //afiseaza sqrt(25)=5
</script>
  tan() Math.tan(ValoareNumerica)
Descriere Tangenta
Exemplu <script>
   a=0.9965;
   rezultat=Math.tan(a);
   document.write("tan("+a+")="+rezultat);
   //afiseaza tan(0.9965)=1.545483358938326
</script>

Mai multe despre obiectul matematic Math

Există două inconveniente majore ale limbajului JavaScript, pe care le puteți întâlni în efectuarea calculelor matematice care conțin numere zecimale:
timpul de execuție (JavaScript este relativ lent!);
precizia.

Aplicație

Scrieți un program JavaScript care calculează și afișează cât fac:
0.121*100;
0.119*100.

În figura 2.58 se prezintă documentul (X)HTML complet în care s-a inserat
script-ul aplicației [3].

Figura 2.58

Rezultatele execuției script-ului sunt afișate în figura 2.59.

Figura 2.59

Remarcă

Rutinele interne ale limbajului JavaScript nu sunt atât de precise pe cât ne așteptam. Script-ul dumneavoastră este corect dar rezultatul este diferit față de cel scontat. Așteptați-vă la astfel de surprize (neplăcute!) mai ales atunci când folosiți numere care conțin multe zecimale!
Nici precizia funcțiilor trigonometrice nu este infailibilă!
Pentru a rezolva problema afișării rezultatelor cu multe zecimale scrieți o funcție personalizată care trunchiază numărul zecimal la un număr de zecimale dorit, înainte de a-l afișa (vezi Conversația 8).

top
 
  Obiectul Number    
     

Obiectul Number facilitează gestiunea numerelor. Proprietățile sale sunt constante care permit definirea valorilor de bază indiferent de navigator.

Fișa obiectului Number este prezentată în figura 2.60.

Figura 2.60
Fisa obiectului Number
Cum cream obiectul? Constructorul Number()
Proprietati: MAX_VALUE, MIN_VALUE, NaN, NEGATIVE_INFINITY, POSITIVE_INFINITY
Metode: toExponential(), toFixed(), toPrecision(), toString()
Gestionarii de evenimente: -

Constructorul Number()

Nu este obligatoriu să creați explicit obiecte Number. Dacă totuși ... insistați folosiți constructorul Number() care este prezentat în detaliu, în figura 2.61.

Figura 2.61
 
Constructor
Sintaxa
Number() Variabila=new Number(Numar)
Variabila=new Number()
Variabila=Numar
Descriere Constructorul Number() poate fi folosit în egala masura ca functie. În acest caz, ea returneaza valoarea argumentului transmis ca parametru (Tabelul 9).

Tabelul 9
Argument
Rezultat
null
0
false
0
true
1
numar numar
sir de caractere alfanumerice NaN
sir de caractere numerice numar

Exemplu <script>
   x="14.253"; y=Number(x);
   document.write(x+"-"+y);
</script>

Proprietățile obiectului Number

Proprietățile obiectului Number() sunt prezentate în detaliu în figura 2.62.

Figura 2.62
 
Proprietate
Sintaxa
MAX_VALUE Number.MAX_VALUE
Descriere Cea mai mare valoare pozitiva a obiectelor Number.
Exemplu <script>
   document.write(Number.MAX_VALUE);
   //afiseaza 1.79769931348623157e+308
</script>
  MIN_VALUE Number.MIN_VALUE
Descriere Cea mai mica valoare pozitiva a obiectelor Number.
Exemplu <script>
   document.write(Number.MIN_VALUE);
   //afiseaza 5e.-324
</script>
  NaN Number.NaN
Descriere Valoare numerica non valida. Ea este returnata printr-o metoda precum parseFloat() sau parseInt() atunci când o valoare matematica nu poate fi returnata.
  NEGATIVE_INFINITY Number.NEGATIVE_INFINITY
Descriere

Valoarea minus infinit. Identic cu -Infinity.

  POSITIVE_INFINITY Number.POSITIVE_INFINITY
Descriere Valoarea plus infinit. Identic cu +Infinity.

Metodele obiectului Number

Metodele obiectului Number sunt prezentate în detaliu în figura 2.63.

Figura 2.63
 
Metoda
Sintaxa
toExponential() Number.toExponential(NumarZecimal)
Descriere Afiseaza un numar în format exponential cu rotunjire.
Exemplu <script>
   a=4.445845558555588574;
   b=a.toExponential(2);
   document.write(b);
   //afiseaza .45e+0
</script>
  toFixed() Number.toFixed()
Descriere Rotunjeste un numar la întregul cel mai apropiat superior sau inferior.
Exemplu <script>
   a=8.5;
   b=a.toFixed();
   document.write(b);
   //afiseaza 8
</script>
  toPrecision() Number.toPrecision(Numar)
Descriere Rotunjeste un numar cu precizia indicata ca parametru. Daca acest parametru este egal cu 1, numarul este rotunjit la întreg.
Exemplu <script>
   a=4.445845558555588574;
   b=a.toPrecision(4);
   document.write(b); //afiseaza 4.446
</script>
  toString() Number.toString()
Descriere Converteste un numar într-un sir de caractere. Metoda este foarte putin utilizata întrucât valorile numerice sunt imediat si în mod automat convertite în caractere atunci când ele sunt introduse într-un sir de caractere.
Exemplu <script>
   a=88.596;
   b=a.toString();
   document.write(b);
</script>

Remarcă

Obiectul Number este folosit de foarte puține ori. Este util atunci când trebuie să accesați anumite constante (vezi proprietățile obiectului Number).
Crearea obiectelor Number este implicită în cele mai multe cazuri.
Puteți crea obiecte Number atunci când trebuie să le adăugați proprietăți.

top
 
  Obiectul Boolean    
     

Obiectul Boolean este folosit pentru a transforma o valoare non-booleană într-o valoare booleană.
Obiectul Boolean nu poate conține decât două valori: TRUE sau FALSE.

Fișa obiectului Boolean este prezentată în figura 2.64.

Figura 2.64
Fisa obiectului Boolean
Cum cream obiectul? Constructorul Boolean()
Proprietati: prototype
Metode: toString()
Gestionarii de evenimente: -

Remarcă

prototype permite adăugarea de proprietăți și metode obiectului Boolean.

Constructorul Boolean()

Constructorul Boolean() este prezentat în detaliu în figura 2.65.

Figura 2.65
 
Constructor
Sintaxa
Boolean() Variabila=new Boolean()
Variabila=new Boolean(Valoare)
Variabila=true
Variabila=false
Descriere Creeaza un nou obiect Boolean. El poate fi creat cu operatorul new sau implicit, atribuind o valoare logica (true/false) unei variabile.
Exemplu <script>
   //crearea unui obiect boolean vid
   a=new Boolean();
   a=true;
</script>
Exemplu <script>
   //crearea si initializarea simultana a unui obiect boolean
   a=new Boolean(true);
</script>
Exemplu <script>
   //crearea implicita a unui obiect boolean
   a=true;
</script>

Mai multe despre obiectul Boolean

Obiectele booleene care conțin una din următoarele valori:
   - 0, false, null, NaN, undefined, ””
sunt evaluate FALSE.
Obiectele booleene care conțin una din următoarele valori:
   - true, ”text oarecare”, 58, –96
sunt evaluate TRUE.

top
 
  EXEMPLUL 2 JAVASCRIPT (continuare)    
     
Codificarea în limbajul JavaScript (continuare din Conversația 2)

Pentru a codifica în limbajul JavaScript algoritmul prezentat în conversația precedentă, creați documentul (X)HTML (utilizați Notepad sau Macromedia Dreamweaver) în care inserați script-ul, cu una din metodele prezentate mai jos:
Metoda 1 – inserați script-ul în corpul paginii;
Metoda 2 – plasați script-ul în antet-ul paginii;
Metoda 3 – utilizați fișiere sursă externe;
Metoda 4 – creați un gestionar de evenimente.

Folosiți unul din editoarele prezentate mai jos:
Notepad;
Macromedia Dreamweaver MX.

Metoda 1

1. Creați documentul (X)HTML (figura 2.66)

Figura 2.66

2. Inserați elementul <script> ... </script> în corpul documentului (figura 2.67).

Figura 2.67

3. Atribuiți variabilei r valoarea 3 (figura 2.68).

Figura 2.68

4. Codificați formula de calcul a ariei rezervorului sferic, folosind proprietatea Math.PI (pentru constanta ) și metoda Math.pow() (pentru codificarea lui r2, (vezi figura 2.69).

Figura 2.69

Remarcă

Proprietatea Math.PI a obiectului Math este prezentată în detaliu în figura 2.57.
Metoda pow() a obiectului Math este prezentată în detaliu în figura 2.57.

5. Afișați rezultatele (figura 2.70).

Figura 2.70

Remarcă

Posibilitatea de combinare a tag-urilor (X)HTML și a instrucțiunilor JavaScript este una din caracteristicile cele mai importante ale unui navigator care suportă JavaScript. În realitate, această facilitate constituie esențialul Web-ului dinamic și interactiv.
În figura 2.71 este prezentat documentul (X)HTML complet, editat cu Macromedia Dreamweaver.

Figura 2.71

6. Afișați pagina Web într-un navigator (figura 2.72).

Figura 2.72

Metoda 2

1. Creați documentul (X)HTML.
2. Introduceți elementul <script> ... </script> în secțiunea <head> ... </head> a documentului (vezi figura 2.73).

Figura 2.73

3. Definiți funcția calcul() în care introduceți formula de calcul precedată de cuvântul cheie return (vezi figura 2.74).

Figura 2.74

Remarcă

Revedeți paragraful „Definiți o funcție” (Conversația 2).
Revedeți paragraful „Returnarea unei valori” (Conversația 2).
De regulă, cea mai bună locație pentru definirea unei funcții este antet-ul (<head> ... </head>) documentului. Întrucât instrucțiunile din antet sunt executate primele, aveți certitudinea că funcția este definită înainte de a fi utilizată.

4. Apelați funcția calcul(3) din script-ul plasat în corpul documentului (vezi figura 2.75).

Figura 2.75

Remarcă

Apelați funcția calcul() pentru mai multe valori ale razei: calcul(4), calcul(5).
În figura 2.76 este prezentat documentul XHTML complet editat cu Macromedia Dreamweaver.

Figura 2.76

5. Afișați pagina Web într-un navigator (vezi figura 2.77).

Figura 2.77

Metoda 3

1. Creați fișierul calcul.js care conține funcția calcul(), figura 2.78.

Figura 2.78

2. Introduceți atributul src=”calcul.js” în tag-ul de deschidere al elementului <script> (figura 2.79).

Figura 2.79

Remarcă

Atributul src transmite interpretorului JavaScript că doriți să includeți codul JavaScript în fișierul calcul.js.
Extensia .js nu este obligatorie dar prezența ei identifică fișierele care conțin codul sursă JavaScript.

Metoda 4

Folosiți gestionarul de evenimente onClick în tag-ul <input> al unui formular (vezi figura 2.80).

Figura 2.80

Remarcă

Vezi Conversația 8.

top
 
  Temă    
     
Testați-vă cunostințele

1. Cum clasificați operatorii JavaScript?

2. Care este semnificația operatorilor: +=; –=; *=; /=; %=?

3. Care sunt obiectele matematice pe care le cunoașteți?

4. Cum se creează obiectul Math?

5. Cum creați un nou obiect Number și un nou obiect Boolean?

6. Precizați rezultatele execuției următoarelor script-uri (figura 2.81):

Figura 2.81

Testați-vă cunostințele

7. Care va fi rezultatul expresiei:
25+”de zile”?
   - un mesaj de eroare;
   - 26;
   - ”25 de zile”.

Vizitați site-urile

msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/ js56jsorijscript.asp
developer.netscape.com/tech/javascript
www.zdnet.com/devhead/filters/0,,2133214,00.html
webdeveloper.earthweb.com/webjs
javascript.about.com/?once=true&

top
CUPRINS> Operatorii JavaScript. Obiecte matematice INTRO
INAPOI INAINTE