Sunteți pe pagina 1din 17

Curs – Programare WEB

Curs – 6

1. Introducere in lumea JavaScript

1.1 Notiuni generale

Initial limbajul JavaScript a fost dezvoltat de Netscape sub denumirea LiveScript , un


limbaj de scriptare care intentiona sa extinda capacitatile HTML si sa ofere o
alternativa partiala la utilizarea unui numar mare de scripturi CGI pentru prelucrarea
informatiilor din formulare si pentru a adauga dinamism in paginile web . Dupa
lansarea limbajului Java , Netscape a inceput sa lucreze impreuna cu firma Sun pentru
a oferi un limbaj de scriptare a carui sintaxa si semantica erau strans legate de Java –
motiv pentru care denumirea a fost schimbata in JavaScript . Dupa finalizarea
limbajului firmele Netscape si Java l-au lansat impreuna .

Una dintre motivatiile care au stat la baza limbajului JavaScript a fost recunoasterea
necesitatii ca logica si inteligenta sa existe si pe partea de client , nu doar pe partea de
server . Daca toata logica este pe partea de server intreaga prelucrare este dirijata la
server , chiar si pentru sarcini simple , asa cum este validarea datelor . In fapt , lipsit
de suport logic pe partea de utilizator , mediul web ar intra intr-o arhitectura
demodata , inlocuita inca din anii '80 . Asigurarea de logica in interiorul browserului il
inzestreaza pe client si face ca relatia sa fie un adevarat sistem client-server .

De la lansarea sa , in decembrie 1995 , JavaScript si-a atras sprijin din partea


principalilor distribuitori din domeniu , ca Apple , Borland , Informix , Oracle ,
Sybase , HP sau IBM . A continuat sa se dezvolte , obtinand recunoastere nu numai in
majoritatea browserelor actuale ci si in alte aplicatii pe care le-au lansat aceste
companii .
Situatia s-a complicat putin atunci cand Microsoft a intervenit . Intelegand importanta
scriptarii web , Microsoft a dorit sa ofere suport si pentru JavaScript . Cand Netscape
a preferat sa acorde licenta de tehnologie companieie Microsoft in loc sa o vanda
Redmond a analizat JavaSript , bazandu-se pe documentatia publica si a creat propria
sa implementare , Jscript , care este recunoscuta de Microsoft Internet Explorer .
Jscript 1.0 este aproximativ compatibil cu JavaScript 1.1 , care este recunoscut de
Netscape Navigator . Totusi , numeroasele versiuni JavaScript si diversele diferente
specifice platformelor de operare le-au dat destule dureri de cap programatorilor
pentru web .
Din fericire problema s-a reglementat ( aproape definitiv ! ) cand Netscape si
Microsoft precum si alti distribuitori au fost de acord sa predea limbajul unei
organizatii internationale de standardizare – ECMA ; aceasta a finalizat o specificatie
de limbaj , cunoscuta ca ECMAScript , pe care o recunosc toti distribuitorii . Desi
standardul ECMA este util , atat Netscape cat si Microsoft au propriile lor
implementari ale limbajului si continua sa extinda limbajul dincolo de standardul de
baza .

Pe langa Jscript , Microsoft a introdus si un concurent pentru JavaScript , numit


VBScript , realizat pentru a usura patrunderea pe web a programatorilor VB . In
esenta , VBScript este un subset al limbajului Visual Basic . Deoarece Netscape nu
recunoaste VBScript , principalele sale utilizari sunt intraneturile sau siteurile unde se
inregistreaza o majoritate clara de utilizatori Microsoft Internet Explorer .
Chiar tianad seama de VBScript , JavaScript a devenit cunoscut ca limabjul de
scriptare standard pentru web . Intrucat distribuitorii produc instrumente de dezvoltare
web care necesita un limbaj de scriptare , JavaScript este frecvent folosit in acest scop
; astfel , Netscape foloseste limbajul cunoscut ca Server-Side JavaScript ( SSJS ) pe
partea de server . Desigur , Microsoft nu a ramas in urma si , cand a lansat tehnologia
Active Serve Pages ( ASP ) , aceasta includea si recunoasterea motorului Jscript .

In general se considera ca exista zece aspecte fundamentale ale limbajului JavaScript


pe care orice programator in acest limbaj ar trebui sa le cunoasca si sa le respecte :

- JavaScript poate fi inglobat in HTML – Daca ne ocupam de JavaScript pe


partea de client intre acesta si HTML aproape ca nu exista deosebiri . De
obicei codul JavaScript este gazduit in documentele HTML si executat in
interiorul lor . Cele mai multe obiecte JavaScript au etichete HTML pe care le
reprezinta , astfel incat programul este inclus la nivelul esential , pe partea de
client a limbajului . JavaScript foloseste HTML ca modalitate de a intra in
cadrul de lucur al aplicatiilor pentru web .
- JavaScript este dependent de mediu – JavaScript este un limbaj de scriptare ;
softwareul care ruleaza de fapt programul este motorul de interpretare din
mediu – Netscape Navigator , Internet Explorer , etc. Este important sa nu
uitam aceasta dependenta de browser atunci cand decidem unde utilizam
aplicatii JavaScript .
- JavaScript este un limbaj interpretat – codul nostru va fi interpretat de browser
inainte de a fi executat . JavaScript nu este compilat in binar ci ramane parte a
documentului HTML . Dezavantajul acestui tip de limbaj este c rularea
dureaza mai mult deoarece browserul trebuie sa compileze de fiecare data
instructiunile in timpul rularii chiar inainte sa le execute . Avantajul principal
consta in faptul ca este mult mai usor sa actualizam codul sursa .
- JavaScript este un limbaj flexibil - in aceasta privinta limbajul difera radical
de C++ sau Java . In JavaScript putem declara o variabila de un anumit tip dar
nu suntem obligati sa o facem ; putem lucra cu o variabila desi nu-i cunoastem
tipul specificat inainte de rulare .
- JavaScript este bazat pe obiecte – Netscape si altii se refera la JavaScript ca la
un limbaj de programare orientat obiect – acest lucru este putin fortat – mai
corect ar fi "bazat pe obiecte" ; modelul de obiect JavaScript este bazat pe
instanta si nu pe mostenire .
- JavaScript este condus de evenimente – mare parte a codului JavaScript
raspunde la evenimente generate de utilizator sau de sistem . In sine , limbajul
este echipat pentru a trata evenimente .
- JavaScript nu este Java – Cele doua limbaje au fost create de firme diferite iar
motivul denumirilor asemanatoare este legat puternic de marketing .
- JavaScript este multifunctional – limbajul are o multime de fatete si poate fi
folosit intr-o multitudine de contexte pentru a rezolva diferite probleme .
- JavaScript evolueaza – limbajul evolueaza intr-un ritm accelerat , fapt care are
conotatii pozitive insa poate genera si multe probleme , progrmatorii trebuind
sa se intrebe permanent ce versiune sa foloseasca pentru ca aplicatiile sa poata
fi disponibile unui numar cat mai mare de utilizatori de browsere .
- JavaScript acopera diverse contexte – programarea cu acest limbaj este
indreptata mai ales catre partea de client dar putem folosi fara probleme
JavaScript si pentru partea de Server . Tot JavaScript este limbajul nativ pentru
unele instrumente de dezvoltare web , ca Borland IntraBuilder sau
Macromedia Dreamweaver . Cea mai noua aplicabilitate a scripturilor
JavaScript vine dinspre sistemele de operare Windows care accepta acum , cu
mediul lor WSH – Windows Script Host – implementarea de JavaScript chiar
pe suprafata de lucru .

Partea de client a cadrului de lucru al aplicatiilor pentru web – elementul central al


lucrarii de fata – consta din patru lucruri de baza :

a. browsere
b. HTML
c. extensii pe partea de client ( appleturi Java , controale ActiveX sau module
plug-in )
d. limbajul de scriptare ( JavaScript , VBScript sau altul )

Browserul este componenta de baza a unei aplicatii web , reprezentand fereastra


utilizatorului catre web si servind drept interfata cu utilizatorul . La acest moment –
inceputul lui 2002 – piata browserelor este acaparata aproape in intregime de doua
produse : Netscape Navigator si Microsoft Internet Explorer , lucru care pentru
dezvolatorii de aplicatii este de un mare ajutor , reducand problema testarii
rezultatelor muncii lor pe diferite browsere .

HTML este principala tehnologie pe care se bazeaza sistemul web iar problematica sa
a fost detaliata in prima parte a lucrarii .

Extensiile pe partea de client au aparut ca programe de completare a browserului ,


realizate de terti , pentru a-l face mai puternic . Desi browserul trebuie sa recunoasca o
anumita tehnologie pentru a o folosi aceasta nu trebuie neaparat legata de el .
Actualmente exista trei extensii pe partea de client care s-au impus in acest domeniu ,
toate prezentand unele similitudini dar avand totusi diferente majore intre ele :

- miniaplicatii Java
- controale ActiveX
- module plug-in Netscape

Miniaplicatiile Java – cunoscute ca appleturi – sunt introduse in HTML printr-o


eticheta <applet> . Appletul este descarcat pe calculatorul client intr-o forma
compilata iar browserul – daca este compatibil Java – interpreteaza acest cod de biti
si-l executa .

Controalele ActiveX – cunoscute anterior ca OCX-uri – constituie raspunsul


Microsoft la appleturile Java . Ele sunt similare appleturilor cu o diferenta majora insa
: controalele ActiveX sunt limitate la mediul de operare Windows ( cel putin la
momentul actual )

Modulele plug-in Netscape reprezinta o tehnologie usor diferita dar sunt tot o extensie
pe partea de client a browserului . In esenta un astfel de modul extinde capacitatile
normale ale browserului Netscape navigator oferind suport pentru tipuri de date
suplimentare si pentru alte caracteristici .

Partea de server a cadrului de lucru al aplicatiilor pentru web consta in doua


elemente :

- servere
- extensii pe partea de server

Serverul web raspunde de tratarea cererilor pentru documentele HTML de la clienti si


returnarea lor pentru vizualizare . Intre cele mai folosite servere la acest moment
gasim Netscape Enterprise Server ( NES ) , Microsoft Internet Information Server
( IIS ) si Apache .

Extensiile pe partea de server asigura capacitati pe care serverul in sine nu le


recunoaste , cum ar fi CGI , API pentru servere , JavaScript sau Java .

CGI – Common Gateway Interface – este actuala modalitate standard de stabilire a


interfetei intre programe externe si servere web . Folosind CGI putem executa pe
server programe sau scripturi CGI pentru a genera continut creat dinamic care sa fie
afisat utilizatorului
Pentru a scrie un program CGI putem folosi orice limbaj de programare – Java , Perl ,
C++ , PHP sau Visual Basic – atat timp cat acesta poate fi rulat pe serverul web .

API pentru servere – interfata nativa pentru programele de aplicatie – reprezinta o alta
modalitate de integrare cu serverul . Folosirea API duce la o integrare mai stransa cu
serverul – in Windows de exemplu es va crea un fisier .DLL care este accesat de
server . Avantajul folosirii de interfete API pentru servere este eficienta mai mare
decat in cazul programelor CGI – acestea necesitand ca o instanta separata a
programului sa fie executata pentru fiecare cerere sau inaintare a clientului .
Dezavantajul folosirii unui API particular pentru server este tocmai specificitatea
unica acelui server . Fisierul nostru .DLL pentru un API ca ISAPI de exemplu
( Microsoft Internet Server API = ISAPI ) nu va functiona cu un server Netscape .

JavaScript poate fi folosit – dupa cum am mai spus – si pentru partea de server .
Mediul Netscape Server-Side JavaScript ne permite sa folosim scripturi ca sa
construim aplicatii web controlate de serverul Netscape . In plus , Microsoft
recunoaste Jscript in cadrul sau de lucru Active Server Pages .

Java pe partea de server a cunoscut o dezvoltare exploziva in ultimul timp datorita


tehnologiei JSP ( Java Serve Pages ) lansata de firma Sun . Acesta tehnologie
ameninta puternic concurenta reprezentata de SSJS sau ASP .
In plus exista si aplicatiile numite Java Servlets ; acestea sunt componente
asemanatoare controalelor AciveX din mediul ASP , care sunt apelate pe masura ce
paginile sunt construite sau pentru a construi pagini . Aceasta permite programatorilor
sa aplice Java pentru a construi componente rapide si fiabile , independente de
platforma .

1.2 Conlucrarea JavaScript – HTML


HTML ofera capacitatea de a crea remarcabile pagini web statice . JavaScript ofera
capacitatea de a face ca paginile statice sa devina interactive si mai prompte fata de
actiunille utilizatorilor si de intrarile acestora .
JavaScript ofera avantaje fata de documentele interactive bazate pe server , cum ar fi
CGI , deoarece – in general – documentele bazate pe JS nu sunt dependente de
prelucrarea pe partea de server , astfel ca pot raspunde mai rapid la interactiunile si
cererile utilizatorului .

Pentru a intelege felul in care JS functioneaza in interiorul universului HTML va


trebui sa revedeti eventual prima parte a lucrarii .

Scripturile JS sunt integrate in HTML printr-o eticheta <script> . Intr-un document


HTML pot exista mai multe etichete <script> si fiecare dintre ele poate incadra mai
multe seturi de instructiuni . Atributul "type" al etichetei este folosit pentru a specifica
limbajul in care este scris scriptul iar atributul "src" este folosit pentru a specifica
numele fisierelor sursa JS externe .

Eticheta <script> poate avea diferite atribute , grupate in cele ce urmeaza :

Atribut Descriere
defer Folosit pentru a anunta browserul daca
scriptul din aceasta sectiune genereaza un
continut
language Atribut depreciat , utilizat anterior pentru
a specifica limbajul si versiunea folosite
intre etichete
src Specifica locatia URL a unui fisier JS
sursa externa
type A inlocuit atributul "language" si anunta
browserul ce limbaj se va folosi intre
etichete

Atunci cand folosim JS in documentul HTML avem doua optiuni : sa introducem


instructiunile JS direct in fisierul HTML intre etichetele <script> si </script> , acest
stil se numeste in-line scripting ; a doua optiune este disponibila doar incepand cu
versiunea JavaScript 1.1 si se refera la introducerea instructiunilor JS intr-un fisier
separat , cu extensia JS , ceea ce permite apelarea fisierului din interiorul
documentului HTML , in prima linie a etichetei <script> .
In continuare avem doua exemple ale celor doua stiluri de utilizare ale JS , mai intai
stilul in-line si apoi apelarea unui fisier extern :

<script type="text/javascript">
functions options() {
document.write("introducem codul");
}
</script>
<script src="/jscripts/ScriptulMeu.js"></script>

In cazul in care incarcam scriptul nostru dintr-un alt fisier atributul "language" nu este
necesar atata vreme cat folosim extensia .JS . Folosirea acestui mod de a utiliza
JavaScript este extrem de populara datorita modularitatii si portabilitatii superioare
oferite .
Exista si un neajuns destul de important al acestei folosiri a JS – intr-un fisier extern
.JS nu putem folosi etichete HTML ci doar instructiuni JavaScript .

Atributul "type" – inlocuitorul lui "language" – poate lua valori predefinite pentru
tipul de script folosit :

- pentru JavaScript sintaxa este : type="text/javascript"


- pentru VBScript sintaxa este : type="text/vbscript"

Recomandarea HTML 4.01 specifica introducerea unei etichete <meta> in portiunea


<head> a documentelor , care specifica limbajul prestabilit folosit in toate scripturile .
Eticheta ar trebui sa arate astfel :

<meta http.equiv="Content-Script-Type" content="text/javascript">

Elementele ce stau la baza crearii programelor JS sunt simple . Cream o pagina


HTML sau editam una existenta apoi inseram etichete <script> in sectiunea <head>
sau <body> a documentului . Este preferabil ca funstiile si alte elemente ce ar trebui
sa fie aplicate intregii pagini sa fie continute in sectiunea <head> a documentului .
Daca trebuie sa generam text pentru pagina folosind JS il vom genera in interiorul
sectiunii <body> .

2. Limbajul JavaScript

Pentru a realiza si utiliza aplicatii JS avem nevoie de cateva unelte principale :

a. un editor JavaScript pentru scrierea codului


b. un editor HTML pentru dezvoltarea paginilor web
c. un browser web pentru a testa scripturile
d. un program de depanare a scripturilor

a. Pentru editarea de cod sursa JS putem folosi orice editor de texte . Intre cele
mai comode si usor de utilizat utilitare pentru acest scop amintim :

- Notepad ( pentru Windows )


- TextPad ( pentru Windows )
- emacs ( pentru UNIX )
- vi ( pentru UNIX )
- SimpleText ( pentru Macintosh )
- BBEdit ( pentru Macintosh )

In afara editoarelor de text exista si unele editoare dedicate specific dezvoltarii


aplicatiilor JS . Aceste aplicatii ofera unele caracteristici functionale deloc de neglijat :
editare de text prin drag& drop , evidentierea sintaxei pentru cuvintele cheie si pentru
etichetele HTML , functii de cautare si inlocuire , integrarea cu multe browsere pentru
testare si depanare , etc .
Intre programele de acest tip amintesc NetObjects ScriptBuilder sau Netscape
Application Builder .

b. Aceasta problematica a fost tratata in prima parte a lucrarii

c. Regula de baza este testarea scriptului folosind toate tipurile posibile de


browsere ce vor accesa pagina . Modalitatea cea mai buna de a determina care
browsere ne acceseaza siteul este analiza jurmalelor de web . Orice browser
expediaza un sir utilizator-agent pe care il putem folosi pentru a determina
browserele si sistemele de operare ale utilizatorilor .

d. In acest moment principalele doua programe pentru depanarea scripturilor


provin de la Netscape si Microsoft ( surprinzator nu ?! ) . In practica este
recomandata folosirea amandorura pentru a depana scripturi atat in Navigator
cat si in Internet Explorer .

Procesul de programare in JavaScript are o diagrama logica foarte simpla si clara :


crearea unei pagini HTML , adaugarea de cod JS si testarea rezultatelor in browsere .

Editor HTML PROGRAMARE


Creaza pagina web

Editor JavaScript TESTARE/DEPANARE


Adauga cod JavaScript

Browser web
Ruleaza pagina HTML

Figura 1.

2.1 Elemente fundamentale


Primul lucru care trebuie mentionat – si retinut ! – este faptul ca JavaScript este un
limbaj case-sensitive , adica face o diferentiere intre majuscule si minuscule . De
exemplu o variabila "popescu" este diferita de o alta numita "Popescu" .

Tokenuri – acestea sunt cele mai mici cuvinte , expresii sau caractere individuale pe
care le poate intelege JavaScript . Cand JS este interpretat , browserul analizeaza
scriptul , identificand tokenurile si ignorand comentariile si spatiile albe .
Tokenurile JS se clasifica in patru categorii : identificatori , cuvinte cheie , elemente
literale si operatori .
Ca in cazul tuturor limbajelor dispunem de mai multe modalitati de a aranja aceste
tokenuri ca sa instruim un calculator sa execute o functioe specifica . Sintaza unui
limbaj este setul de reguli si restrictii privind modalitatea in care putem combina
tokenurile .

Expresiile reprezinta seturi de instructiuni care , in grup , sunt evaluate la o valoare


unica . Aceasta valoare rezultata este dupa aceea clasificata de JS ca unul dintre
tipurile de date : boolean , number , string , function , object ( detaliate putin mai
tarziu ) .
O expresie poate fi foarte simpla – un numar sau o variabila – sau poate grupa mai
multe variabile , cuvinte cheie si operatori .

IDENTIFICATORI

Acestia sunt pur si simplu nume care reprezinta variabile , metode sau obiecte . Ei
constau dintr-o combinatie de literale si cifre . unele nume sunt deja incorporate in
limbajul JS si , ca urmare sunt rezervate .
Pe langa aceste cuvinte cheie putem defini proprii nostri identificatori respectand
cateva reguli :

- identificatorii trebuie sa inceapa cu o litera sau liniuta de subliniere "_"


- pentru caracterele care urmeaza primului putem folosi litere , cifre sau "_"
- literele majuscule si minuscule sunt de la "a" la "Z"
- un identificator nu trebuie sa includa in numele sau spatii

CUVINTE CHEIE SI CUVINTE REZEVATE

Cuvintele cheie sunt identificatori predefiniti care formeaza nucleul limbajului .


Acestea sunt incorporate in limbaj si sunt totdeauna disponibile pentru utilizare , cu
respectarea sintaxei lor corecte .
Cuvintele rezervate sunt identificatori pe care nu-i putem folosi ca nume de variabile ,
functii , obiecte sau metode . Ele includ cuvintele cheie si identificatorii care sunt
pastrati pentru o posibila utilizare viitoare .
Tabelul de mai jos cuprinde toate cuvintele rezervate pentru JavaScript :

Abstract do goto package throws


boolean double if private transient
break else implements protected true
byte enum import public try
case export in return typeof
catch extends instanceof short var
char false int static void
class final interface super volatile
const finally long switch while
continue float native synchronized with
debugger for new this
default function null throw

ELEMENTE LITERALE

Acestea sunt siruri sau numere folosite pentru a reprezenta valori fixe in JavaScript .
Ele sunt valori care nu se modifica in timp ce se executa scripturile . Exista mai multe
tipuri de literale folosite in JS :

a. Numar intreg

Pot fi exprimate zecimal , octal sau hexazecimal . Un literal zecimal poate contine
orice cifra ; un zero in fata unui element literal desemneaza formatul octal iar
folosirea elementului 0X ( sau 0x ) in fata unui numar duce la tratarea sa ca numar
hexazecimal .

b. Virgula mobila

Aceste elemente reprezinta numere zecimale fractionare . Ele pot fi exprimate


standard sau exponential . Reprezentarea exponentiala foloseste "e" sau "E" pentru a
desemna exponentul . Atat numarul cat si exponentul pot fi pozitive sau negative :

1234.567
-12.45
1234e-11
450e10
5.5E-12

c. Valori booleene

JS accepta literalele "true" si "false" pentru valorile booleene 1 si 0 . Acesti termeni


trebuie sa apara scrisi cu litere minuscule .

d. Sir

Un literal de tip sir este format din zero sau mai multe caractere incadrate intre
ghilimele sau apostrofuri ( dar la ambele extremitati ale literalului trebuie folosit
acelasi semn ) :

"masina mea" --> CORECT


'lectia numarul unu' --> CORECT
"lectia numarul doi' --> INCORECT
e. Caractere speciale

Cand scriem scripturi apare necesitatea de a-i spune calculatorului sa foloseasca un


caracter special sau o apasare de tasta , cum ar fi tasta TAB , sau o linie noua . Pentru
aceasta folosim caracterul backslash "\" in fata unuia din codurile Escape , ca in
exemplele de mai jos :

\b backspace
\f indica o pagina noua
\n indica o linie noua
\r indica un retur de car
\t indica o apasare a tastei TAB
\\ indica un caracter backslash
\' indica un apostrof
\" indica ghilimelele

OPERATORI

Acestia reprezinta simboluri sau identificatori care reprezinta o modalitate in care


poate fi evaluata sau manipulata o combinatie de expresii . Operatorul cel mai
obisnuit pe care il utilizam este cel de atribuire . In expresia "x=10" , atat 10 in sine
cat si variabila x sunt expresii . Cand JS intalneste un operator de atribuire intre doua
expresii actioneaza conform regulilor operatorului ; se ia valoarea expresiei din
dreapta si o atribuie variabilei din partea stanga .

VARIABILE

O variabila este numele dat unei locatii de memorie unde sunt stocate datele .
Atribuirea numelui unei variabile trebuie facuta in conformitate cu regulile de creare a
identificatorilor in general .

Desi nu exista o regula obligatorie de denumire a variabilelor este bine sa folosim


urmatoarele reguli general acceptate :

- la folosirea unui nume dintr-un singur cuvant se folosesc caractere minuscule


- la folosirea mai multor cuvinte pentru numele unei variabile se intrebuinteaza
litere mici pentru primul cuvant si initiala cu litera mare pentru fiecare alt
cuvant

Pentru a anunta JS ca vom folosi un identificator ca variabila trebuie intai sa declaram


variabila . Aceasta declarare a vaariabilelor se face cu cuvantul cheie "var" . Exista
posibilitatea declararii simultane a mai multor variabile :

var adresaInternet;
var n;
var i , j , k;
Dupa ce o variabila este declarata ea poate primi o valoare . Acest fapt se numeste
initializare si se realizeaza prin operatorul de atribuire "=" .O variabila poate fi
initializata chiar la declarare sau oriunde in cadrul scriptului :

var adresaInternet=name@company.ro;
var n=0.0;
var i=1 , j=5 , k;
k=7;

Citirea unei valori dintr-o variabila inainte de initializarea ei determina eroare in


executia programului . JavaScript ne permite sa verificam daca unei variabile i s-a dat
o valoare folosind un operator numit "typeof" – pe care il vom intalni mai tarziu in
cadrul unui capitol dedicat operatorilor .

JS ofera si posibilitatea initializarii directe a variabilei , fara a o declara in prealabil ,


acest proces trecand in seama limbajului .

TIPURI DE DATE

Atunci cand stocam o valoare – sau data – JavaScript o clasifica automat intr-unul din
celel cinci tipuri de date specifice limbajului :

TIP EXEMPLU
number -19 , 5 , 10.2
boolean true , false
string "Text " , ""
function unescape , write
object window , document , null

Variabilele de tip "function" sunt fie definite de utilizator fie incorporate . De exemplu
"unescape" este incorporata in limbaj .

Functiile care apartin obiectelor , numite metode , sunt clasificate tot in tipul de date
function . Obiectele JS esentiale pe partea de client apartin tipului de date "object" .
Initializarea unei variabile obiect – sau mai scurt a unui obiect – cu "null" constituie o
buna metoda de prevenire a erorilor in cazul in care nu suntem siguri ca variabila va fi
sau nu folosita .

In general limbajele de programare cer definirea tipului de date pe care il va


reprezenta o variabila noua si valorile atribuite ei trebuie sa fie de acest tip . JS este
mult mai flexibil , necerand definirea unui tip de date pentru variabila ; variabilele JS
pot accepta oricand un nou tip de date , ca in exemplele de mai jos :

var lungimeChar;
lungimeChar=4+5;
document.write(lungimeChar);
lungimeChar="10 centimetri";
DOMENIUL DE VIZIBILITATE

Acest concept se refera la zona din program care poate referi variabila . De exemplu ,
la inglobarea unui script in cadrul sectiunii <head> si folosirea unui alt script in
documentul HTML , JS considera ca o variabila declarata in aceste locuri ca fiind
globala si astfel orice script din document o va putea folosi .

a. Variabile locale

O astfel de variabila este declarata in cadrul unei functii . Numai functia respectiva are
acces la variabila ; aceasta este creata de fiecare data cand functia este apelata . O alta
functie care declara o variabila cu acelasi nume poate fi folosita , JS tratand cele doua
variabile ca fiind diferite .

b. Variabile globale

Daca vrem ca mai multe functii sa partajeze o variabila aceasta trebuie declarata in
afara oricarei functii . Cu aceasta metoda toate partile aplicatiei noastre pot utiliza
variabila .

CONSTANTE

O constanta este o variabila care pastreaza aceeasi valoare pe toata durata executarii
unui program . JS foloseste constante incorporate pentru a reprezenta valori folosite in
matematica , ca de exemplu pi . Acestea pot fi accesate cu ajutorul obiectului "math" .
Constantele definite de utilizator sunt variabile pe care acesta le defineste si ale caror
valori nu se pot modifica . De obicei , constantele sunt reprezentate prin cuvinte care
incep cu litera mare si sunt definite la inceputul programului

JavaScript nu recunoaste constantele in modul traditional . De obicei , un limbaj care


recunoaste constante definite de utilizator se asigura ca nici o parte a programului nu
poate modifica valoarea ei . Tentativa de modificare determina o eroare . JS nu va
efectua insa aceasta verificare .
Chiar daca nu exista o modalitate prin care sa determinam JS sa se asigure ca o
variabila nu este modificata , putem folosi variabile care sa aiba valori ce sunt folosite
in mod repetat intr-un script . Inlocuind instantele multiple ale unei valori obisnuite cu
o variabila usuram actualizarea ulterioara a scriptului – orice modificare se va face
doar asupra initializarii variabilei .

COMENTARII

Exista doua metode ( folosite si de C/C++ si Java ) pentru a introduce comentarii in


scriptul nostru .
Pentru a insera o linie drept comentariu folosim sintaxa :

// comentariu pana la capatul liniei

Pentru blocuri mai mari de comentarii , pe mai multe linii , putem folosi sintaxa :
/* comentarii
pe mai multe linii */

FUNCTII

In forma ei ce mai simpla o functie este un script pe care il putem apela oricand prin
numele sau . Cand un document HTML este citit de browser acesta va gasi orice
scripturi inglobate si le va executa pas cu pas . In cazul in care preferam ca o parte sau
tot programul sa astepte inainte de a fi executat trebuie sa scriem aceasta parte de
program intr-o functie si sa-i dam un nume .

Cand are loc un anumit eveniment specific putem rula scriptul folosind numele pe
care l-am dat functiei . Alt avantaj al functiilor il constituie capacitatea de refolosire a
scripturilor fara sa scriem in mod repetat aceleasi linii de cod .

In principiu se recomanda scrierea functiilor in sectiunea <head> a documentului


HTML pentru a ne asigura ca functia este incarcata inainte de a fi executata .

CULORI

JS accepta culorile care sunt folosite la construirea paginilor web . Pentru a specifica o
culoare in aplicatia noastra , de exemplu culoarea unui font , alegem dintr-o lista de
optiuni posibile . Aceste valori sunt elemente literale de tip sir pe care le putem atribui
unor proprietati specifice obiectelor .
Exista si posibilitea utilizarii culorilor nu doar cu numele lor ci si prin echivalentul lor
hexazecimal . Acest sir hexazecimal reprezinta o combinatie a valorilor RGB utilizate
pentru formarea oricarei culori . In "Anexa 1" puteti vedea o lista completa cu culorile
recunoscute de JS dupa numele lor .

2.2 Operatori

Ideea care sta la baza oricarui script este introducerea , evaluarea , manipularea sau
afisarea datelor . Instrumentele necesare acestor operatiuni se numesc operatori .
Operatorii sunt simboluri si identificatori care reprezinta fie felul in care sunt
modificate datele fie felul in care este evaluata o combinatie de expresii . JS
recunoaste operatori binari si unari . Operatorii binari necesita existenta a doi operanzi
in expresie in vreme ce operatorii unari au nevoie doar de un operand .

OPERATORI DE ATRIBUIRE

In cazul acestui operator JS actioneaza totdeauna de la dreapta la stanga ; se evalueaza


operandul din dreapta iar valoarea se atribuie variabilei din stanga semnului "=" .
JavaScript recunoaste alti 11 operatori deatribuire , de fapt combinatii intre operatorul
de atribuire si un operator aritmetic sau la nivel de biti :
Combinatia Varianta standard
x+=y x=x+y
x-=y x=x-y
x*=y x=x*y
x/=y x=x/y
x%=y x=x%y
x<<=y x=x<<y
x>>=y x=x>>y
x>>>=y x=x>>>y
x&=y x=x&y
x^=y x=x^y
x|=y x=x|y

OPERATORI ARITMETICI

Principalii operatori folositi alaturi de numere sunt : "+" , "-" , "*" , "/" .
O operatie obisnuita este incrementarea unei variabile , urmata de reatribuirea valorii
respective variabilei insasi . Incrementarea se foloseste atat de frecvent in programe
incat au aparut operatori speciali pentru incrementare si decrementare :

++i --> este similar cu i=i+1


--i --> este similar cu i=i-1

Putem folosi acesti operatori atat ca prefix cat si ca sufix . In acest fel putem modifica
ordinea in care o valoare este intoarsa de expresie si momentul cand este atribuita
noua valoare .

Folosirea operatorilor ca prefix duce la modificarea valorii lor in primul rand si apoi
are loc atribuirea ; in cazul folosirii ca sufix a operatorului prima ca avea loc
atribuirea si doar apoi variabila este incrementata sau decrementata .

Operatorul unar "-" este folosit pentru transformarea unei valori din pozitiva in
negativa sau invers ( in functie de valoarea ei initiala ) .

Operatorul modulo "%" calculeaza restul impartirii primului operand la al doilea .


Exemplul de mai jos :

x=10%3

are ca efect atribuirea valorii 1 variabilei x .

OPERATORI DE COMPARATIE

Expresiile ce folosesc acesti operatori pun de fapt o intrebare despre doua valori .
Raspunsul poate fi "true" sau "false" .
Doua semne egal "==" simbolizeaza operatorul de egalitate . Cand folosim operatoul
acesta intre doi operanzi incercam sa determinam daca valorile lor sunt egale .

Operatorii de comparatie sunt prezentati in tabelul de mai jos :

OPERATOR DESCRIERE
== testeaza egalitatea
!= testeaza neegalitatea
> mai mare decat
>= mai mare sau egal decat
< mai mic decat
<= mai mic sau egal decat

OPERATORI PENTRU SIRURI

Acesti operatori cuprind toti operatorii de comparatie si operatorul de concatenare "+"


. Folosind operatorul de concatenare putem uni mai multe siruri pentru a obtine un sir
mai lung , ca in exemplul de mai jos :

var a="www";
var b="company";
var c="ro";
var sumaPartilor=a+"."+b+"."+c;

OPERATORI CONDITIONALI

JavaScript foloseste doi operatori , "?" si ":" pentru a forma expresii conditionale .
Operatorii conditionali JS executa aceeasi operatie ca si o instructiune "if" imediata .
Expresiile conditionale intorc una din doua valori , in functie de valoarea de adevar a
altei expresii .

De exemplu , putem folosi urmatoarea expresie conditionala pentru a anunta


utilizatorul ca este vizitatorul cu numarul 1000 al paini web :

var resultMsg=(numarHits==1000)?"Castigator":"Pierzator";
alert(resultMsg);

Daca "numarHits" este egal cu 1000 undeva in program expresia aceasta intoarce sirul
"Castigator" , altfel intoarce "Pierzator" . A doua linie a exemplului anterior afiseaza
rezultatul folosind functia incorporata "alert()" .

O expresie conditional poate fi folosita pentru a intoarce orice tip de date , de exemplu
number sau boolean . Urmatoarea expresie intoarce fie un sir fie un numar , dupa cum
numeaHits este true sau false .

var result=useString?"five":5;
document.write(result);
OPERATORI BOOLEENI

Operatorii booleeni sunt folositi in conjunctie cu expresiile care intorc valori logice .
Modalitatea cea mai buna de a intelege este sa-i vedem folositi impreuna cu operatori
de comparatie . Tabelul de mai jos prezinta cei trei operatori booleeni :

OPERATOR DESCRIERE
&& Operatorul logic AND intoarce true daca
atat expresie1 cat si expresie2 sunt
adevarate , altfel intoarce false :
(1>0) && (2>1) intoarce true
(1>0) && (2<1) intoarce false
|| Operatorul logic OR intoarce true daca fie
expresie1 fie expresie2 sunt adevarate :
(1>0) || <2<1) intoarce true
(1<0) || (2<1) intoarce false
! Operatorul logic NOT este unar si
intoarce valoarea opusa a unei expresii :
!(1>0) intoarce false
!(1<0) intoarce true

OPERATORUL typeof

Acest operator intoarce tipul de date continut la momentul respectiv de operandul


sau . Este util mai cu seama pentru a determina daca o variabila a fost definita .
Exemplele de mai jos implementeaza acest operator :

typeof unescape --> intoarce sirul "function"


typeof 33 --> intoarce sirul "number"
typeof "un sir" --> intoarce sirul "string"
typeof true --> intoarce sirul "boolean"
typeof null --> intoarce sirul "oject"

OPERATORI PENTRU FUNCTII

Functiile vor fi detaliate mai tarziu dar in lucrul cu ele este necesar sa fim familiarizati
cu doi operatori . Primul se numeste operator de apelare , este simbolizat printr-o
pereche de paranteze rotunde si urmeaza totdeauna dupa numele functiei . De
exemplu . o functie afisareNume() va fi declarata cu urmatoarea sintaxa :

function afisareNume() {
//corpul functiei
}

Operatorul de apelare este folosit si cand se apeleaza functia de altundeva dintr-un


script , atunci sintaxa fiind :
afisareNume()

Parantezele arata ca in locul oricarui alt identificator definit de utilizator este folosita
o functie .

Al doilea operator pentru functii este virgula "," , folosita pentru a separa argumentele
multiple pe care le poate primi o functie . Argumentele sunt totdeauna incadrate de
operatorul de apelare . Functia afisareNume() modificata pentru a accepta doua
argumente va arata astfel :

function afisareNume( arg1 , arg2 ) {


//corpul functiei
}

OPERATORI PENTRU STRUCTURI DE DATE

Acesti operatori sunt necesari atunci cand lucram cu structuri de date . Structurile de
date sunt cadre de lucru care au fost setate pentru stocarea intr-o modalitate organizata
a uneia sau mai multor informatii esentiale . In JavaScript obiectele sunt folosite la
gruparea informatiilor pentru a servi unui scop mult mai specific .

Un operator pe care ar trebui sa-l cunoastem bine este punctul "." , numit operator
pentru membrul unei structuri . El ne permite sa ne referim la un membru ( variabila ,
functie sau obiect ) care apartine obiectului specificat . Sintaxa este urmatoarea :

numeObiect.numeVariabila

sau

numeObiect.numeFunctie()

sau

numeObiect.altObiect

Modalitatea aceasta de referire la o informatie , numita notatie cu punct , intoarce


valoarea variabilei , functiei sau obiectului aflat cel mai in dreapta .

Operatorul pentru membru , numit si operator indice al tabloului , se foloseste pentru


a accesa o data specifica dintr-un tablou . Simbolizat printr-o pereche de paranteze
drepte , el ne permite sa ne referim la orice membru al unui tablou . Tablourile sunt
obiecte JavaSript si vor fi detaliate mai tarziu . Sintaxa de folosire a operatorului
pentru membru este :

numeTablou[index]

Valoarea lui "index" va fi de tipul intreg .

S-ar putea să vă placă și