Documente Academic
Documente Profesional
Documente Cultură
Curs – 6
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 .
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 )
HTML este principala tehnologie pe care se bazeaza sistemul web iar problematica sa
a fost detaliata in prima parte a lucrarii .
- miniaplicatii Java
- controale ActiveX
- module plug-in Netscape
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 .
- servere
- extensii pe partea de server
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 .
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
<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 :
2. Limbajul JavaScript
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 :
Browser web
Ruleaza pagina HTML
Figura 1.
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 .
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 :
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
1234.567
-12.45
1234e-11
450e10
5.5E-12
c. Valori booleene
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 ) :
\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
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 .
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;
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 .
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
COMENTARII
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 .
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
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 :
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 ) .
x=10%3
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 .
OPERATOR DESCRIERE
== testeaza egalitatea
!= testeaza neegalitatea
> mai mare decat
>= mai mare sau egal decat
< mai mic decat
<= mai mic sau egal decat
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 .
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
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
}
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 :
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
numeTablou[index]