Documente Academic
Documente Profesional
Documente Cultură
DE RETINUT:
DE RETINUT:
➢ numele trebuie sa descrie rolul variabilei (este de preferat total in loc de t), pentru
aceasta se recomanda ca lungimea numelui sa fie mai mare de 2 litere in majoritatea
cazurilor
modului de scriere
➢ numele nu trebuie sa contina spatii, daca numele este compus din mai multe cuvinte
se poate folosi
➢ se recomanda folosirea unei variabile pentru un singur scop, aceasta reduce erorile si
efortul de intelegere
DE RETINUT:
➢ intre operatori si variabile se lasa spatii pentru intelegerea codului si detectarea mai
usoara a erorilor de sintaxa.
➢ sunt de evitat expresii de genul: let rest=a+b; ➢ varianta corecta: let rest = a + b;
DE RETINUT:
DE RETINUT:
➢ precedenta operatorilor logici este: ! && || (se executa mai intai negarea, apoi si, sau
este ultimul)
DE RETINUT:
➢ conversia de la tipul string la valoare numerica se face doar daca in expresie nu este
operatorul +, in acest caz toate valorile se convertesc la tipul string
DE RETINUT:
➢ falsy reprezinta orice valoare care se converteste la false datorita type coercion ➢
truthy reprezinta orice valoare care se converteste la true datorita type coercion ➢
valorile falsy sunt: false, undefined, null, 0, "" (ultima reprezinta sirul vid)
➢ toate celelalte valori sunt truthy
DE RETINUT:
➢ atat compararea stricta cat si compararea cu type coercion sunt corecte si utile
➢ este important de inteles type coercion, truthy respectiv falsy pentru a determina
care tip de comparare este necesar intr-un caz particular
➢ folosirea operatorilor de comparare stricta === respectiv !== ca o solutie universala
fara intelegerea type coercion este generatoare de erori
➢ programatorul trebuie sa gandeasca expresiile, sa determine coerent rezultatul
evaluarii fiecarei expresii inainte de a scrie codul
DE RETINUT:
➢ valoarea expresiei dintre ? si : se atribuie variabilei atunci cand prima expresie este
truthy
➢ valoarea ultimei expresii se atribuie variabilei atunci cand prima expresie este falsy
JS – Curs 2
DE RETINUT:
secvente)
➢ expresia conditiei se scrie intre paranteze rotunde, fragmentul de cod se executa numai
daca valoarea expresiei este true
➢ intelegerea valorilor truthy si falsy prezentate in lectia anterioara este esentiala in
evaluarea expresiilor
➢ pentru comparare in expresii se pot folosi operatorii cu coercion != respectiv == sau cei
fara coercion !== respectiv ===
➢ fragmentul de cod este delimitat de acolade si trebuie scris cu un tab mai la dreapta
fata de if ➢ adaugarea taburilor pentru alinierea codului se numeste indentare.
➢ respectati stilul de formatare a codului prezentat
DE RETINUT:
DE RETINUT:
➢ deciziile switch se folosesc atunci cand rezultatul unei expresii trebuie comparat cu un
set discret de valori
DE RETINUT:
➢ buclele permit executia repetata a unui fragment de cod cat timp o conditie este
indeplinita ➢ executia o singura data a fragmentului de cod se numeste iteratie
➢ exista trei tipuri de bucle: while, do / while si for
➢ buclele while testeaza conditia la inceputul iteratiei
➢ buclele for au trei expresii, prima expresie este cea de initializare si se executa o
singura data, a doua expresie reprezinta conditia, a treia expresie se executa dupa
terminarea fiecarei iteratii, oricare din aceste expresii este optionala
➢ in cazul buclelor trebuie acordata atentie conditiei, o conditie incorect scrisa poate crea
fie bucle infinite sau bucle al caror fragment de cod nu se executa niciodata
DE RETINUT:
➢ pseudocodul este un mod de a descrie pasii logici necesari rezolvarii unei probleme sau
implementarea unor specficatii
➢ descrierea pasilor se face fara detaliile de sintaxa ale unui limbaj de programare
➢ diferenta dintre schemele logice si pseudocod consta in nivelul de detaliu
si indentate corespunzator
DE RETINUT:
executate
DE RETINUT:
➢ daca este compus din mai multe cuvinte se prefera varianta camelCase (urmatoarele
cuvinte incep cu litera mare).
DE RETINUT:
DE RETINUT:
➢ verificati toate ramurile logice de iesire din functie pentru a returna rezultate corecte
DE RETINUT:
➢ domeniul de vizibilitate reprezinta zona de cod in care asocierea dintre nume si zona de
memorie a unei variabile este accesibila
➢ atunci cand se foloseste let sau const erorile de redeclarare sunt detectate automat
daca redeclararea a aparut in acelasi bloc de cod
➢ atunci cand se declara o variabila trebuie verificat blocul curent si toate blocurile pana
la nivelul functiei pentru a evita erorile de redeclarare
➢ se recomanda folosirea declararii cu var pentru variabilele care sunt accesate de mai
multe blocuri de cod la inceputul functiilor.
DE RETINUT:
DE RETINUT:
➢ pentru a crea un closure se foloseste o functie externa care returneaza o functie interna
➢ la fiecare apel al functiei externe se creeaza cate un environment care este accesibil
doar functiei
returnate
➢ folosirea abuziva a closures poate degrada performanta aplicatiilor datorita memoriei
alocate
JS – Curs 4
DE RETINUT:
in aceasta sectiune
➢ proprietatile sunt variabile care apartin obiectului, separatorul dintre numele
proprietatii si valoare
➢ metodele sunt functii care apartin obiectului, sintaxa de declarare este similara cu cea a
proprietatilor
➢ atunci cand proprietatea sau metoda are acelasi nume se scrie doar numele acelei
proprietati sau functii
➢ atunci cand se doreste folosirea altui nume trebuie scris numele proprietatii sau
metodei si in locul valorii se scrie numele variabilei sau functiei
obiect["numeProprietate"]
DE RETINUT:
obiectele parinte atunci cand proprietatea sau metoda respectiva nu este declarata in
obiectul curent
➢ Cand functia constructor este apelata cu new, this este conectat la obiectul nou creat
DE RETINUT:
➢ apelul functiilor constructor sau a constructorilor din clase cu new creeaza un obiect
nou si conecteaza this la acest obiect (aceasta este necesara pentru accesarea
proprietatilor din metode)
➢ functiile call si apply se folosesc atunci cand se doreste apelarea imediata a functiei
➢ functia bind se foloseste cand apelul nu se face imediat (ex. apelul se face ca raspuns la
un eveniment)
DE RETINUT:
➢ JSON este o modalitate de formatare a datelor care se pot trimite intre server si o
aplicatie web
➢ datele reprezinta perechi nume – valoare, intre nume si valoare se foloseste : iar intre
valori virgula ➢ valorile valide sunt: boolean, number, null, object, string si tablou
➢ in JSON nu exista comentarii
➢ conversia datelor in format JSON se numeste serializare
➢ conversia inversa se numeste deserializare
➢ valorile cu tipul undefined sau function nu pot fi serializate
➢ se pot filtra ambele conversii
JS – Curs 5
DE RETINUT:
➢ tablourile sunt variabile de tip object care pot gestiona mai multe valori numite
elemente ➢ determinarea sau setarea numarului de elemente se face cu proprietatea
length
➢ accesarea valorilor se face cu ajutorul unei variabile index
➢ indexul primului element este 0
➢ valorile elementelor pot fi de orice tip inclusiv tablou sau alte colectii
➢ elementele se pot parcurge cu bucla for ... of
➢ metoda push adauga elemente la sfarsitul tabloului
➢ metoda concat genereaza un nou tablou unind elementele a doua tablouri ➢ metoda
slicegenereaza un tablou dintr-o sectiune a unui tablou existent ➢ metoda splice
adauga sau sterge elemente in orice pozitie
➢ metodele every si some testeaza daca toate respectiv cel putin un element indeplinesc
conditia specificata de o functie de callback
➢ prelucrarea valorilor se poate face cu metodele: filter, map, reduce respectiv join, in
toate aceste cazuri tabloul initial nu este modificat
➢ metoda forEach poate modifica tabloul initial apeland o functie de callback pentru
fiecare element
DE RETINUT:
➢ cu metoda split se poate converti un sir la un tablou de siruri, optional se pot specifica
separatorul, care implicit este spatiu, si numarul de siruri
➢ cu metodele padStart / padEnd se pot adauga spatii sau alte caractere, la inceputul sau
sfarsitul unui sir pentru a obtine o latime specificata
DE RETINUT:
➢ cheile sunt unice, daca se adauga mai multe elemente cu aceeasi cheie, valoarea va fi
suprascrisa
➢ metoda get returneaza valoarea elementului care are cheia specificata in colectie sau
undefined daca nu exista niciun element cu acea cheie
DE RETINUT:
➢ arguments este o variabila locala functiilor si grupeaza toti parametrii functiilor intr-o
colectie similara cu un tablou
➢ atat arguments cat si ... permit gruparea mai multor parametrii intr-o colectie de
valori pentru functiile cu numar variabil de parametri
➢ ... grupeaza numai ultimii parametri, daca functia are si alti parametri, numai
parametrii care nu au fost declarati explicit sunt grupati in tablou
➢ arguments nu poate fi folosit in functiile sageata ➢ ... poate fi folosit si pentru functiile
sageata
DE RETINUT:
➢ destructurarea reprezinta extragerea valorilor din tablouri sau proprietatilor
obiectelor in variabile distincte
➢ operatorul ... este folosit pentru a extrage valorile ramase intr-un tablou sau pentru
concatenarea elementelor unor tablouri
JS – Curs 6
DE RETINUT:
➢ atributele data-* permit transferul de date intre continutul paginii si DOM prin
intermediul proprietatii dataset
DE RETINUT:
➢ copierea elementelor se poate face cu metoda cloneNode(); daca este apelata cu true, se
cloneaza elementul selectat si toate elementele descendente; dupa clonare nodul este
adaugat in pagina apeland appendChild()
DE RETINUT:
➢ se recomanda folosirea fiecarei tehnologii pentru scopul cu care a fost creata: pentru
stilurile de afisare sunt folosite setarile CSS, iar pentru comportamentul dinamic
JavaScript.
➢ in majoritatea cazurilor se poate obtine rezultatul dorit setand clasa cu className sau
setul de clase folosind proprietatea classList (declarate in interfata Element) si metodele
contains(), toggle(), add() si remove()
➢ in situatiile cand efectul nu poate fi obtinut prin setarea claselor se poate folosi
proprietatea style (declarata in interfata Element)
➢ toate proprietatile setate cu in proprietatea style sunt aplicate inline si pot interfera
cu celelalte stiluri din fisierele css datorita specificitatii5
DE RETINUT:
➢ canvas este un element HTML care permite desenarea continutului folosind JavaScript
➢ toate metodele de desenare sunt implementate de obiectul context care se obtine din
elementul
DE RETINUT:
➢ elementul template nu este afisat in pagina, este doar un container pentru structura
➢ la selectie trebuie extras continutul acestui container cu proprietatea content si doar
aceste elemente
➢ elementele din structura template pot avea clase si atribute care sa permita aplicarea
stilurilor css
➢ atunci cand aceeasi structura se foloseste pentru mai multe valori, este necesara
clonarea elementelor, asa cum este prezentat in exemplul anterior
DE RETINUT:
➢ numele pentru tagurile definite de utilizator trebuie sa contina minus – pentru a putea
fi procesate de browser
DE RETINUT:
➢ shadow DOM se foloseste atunci cand se doreste evitarea interferentei intre anumite
elemente (adaugate cu template sau definite de utilizator) si structura principala a paginii
➢ continutul adaugat in shadow nu mai poate fi selectat cu css (aceasta este si intentia)
DE RETINUT:
➢ persistenta datelor se poate realiza cu trei mecanisme: Local Storage, Session Storage
si IndexedDB
➢ diferenta dintre Local Storage si Session Storage este ca in ultima datele sunt sterse
automat dupa terminarea sesiunii (inchiderea browserului sau tabului in care este
deschisa pagina).
➢ salvarea si citirea datelor se face adaugand atribute la obiectele localStorage si
sessionStorage ➢ daca valorile salvate sunt obiecte este necesara conversia datelor in
format JSON cu metoda
stringify().
➢ tipul valorilor citite este string; in cazul obiectelor este necesara conversia in format
JSON cu
metoda parse().
➢ pentru stergerea datelor se apeleaza metoda removeItem() din storage
JS – Curs 7
DE RETINUT:
➢ obiectul eveniment are urmatoarele proprietati: target care este referinta la elementul
destinatie, currentTarget care este referinta la elementul curent la care a ajuns
evenimentul, type care reprezinta tipul evenimentului si eventPhase care reprezinta faza
curenta de propagare
DOMContentLoaded.
DE RETINUT:
➢ functia setTimeout() permite apelul unei functii de callback dupa expirarea timpului
specificat in milisecunde
DE RETINUT:
➢ mecanismul exceptiilor este folosit pentru controlarea executiei atunci cand apar erori
in timpul executiei
➢ ridicarea exceptiilor se face cu comanda throw in locul in care apar erori ce nu pot fi
tratate in functia curenta
DE RETINUT:
➢ egalitatea se poate verifica folosind diferenta valorilor in valoare absoluta asa cum a
fost prezentat in exemplul 7.29
DE RETINUT:
➢ functiile asincrone returneaza un obiect Promise care are metode pentru obtinerea
rezultatului final sau a erorilor atunci cand procesarea s-a terminat
➢ metoda all() se foloseste atunci cand este necesar ca toate procesarile asincrone sa fie
terminate inainte de a continua executia
JS – Curs 8
DE RETINUT:
➢ se poate implementa metoda return() care este apelata in aceste situatii; in metoda
trebuie returnat un obiect {done: true} si setata o proprietate cu care sa se poata
determina terminarea iteratiilor in urmatoarele apeluri ale metodei next()
DE RETINUT:
➢ generatoare sunt functii sau metode care permit controlul executiei cu ajutorul
iteratorilor ➢ functiile generator au * intre function si nume
➢ functiile sageata nu pot fi generatori
➢ la apelul functiei generator se returneaza un iterator, executia este suspendata
➢ la fiecare apel al metodei next next() se executa fragmentul de cod dintre punctul in
care a fost suspendata anterior si una din instructiunile yield, return sau terminarea
codului functiei
apelul next()
➢ executia se poate face cu bucle for...of
➢ daca bucla in care se executa functia generator este oprita cu break iteratorul ajunge
la sfarsit
DE RETINUT:
➢ pentru testare se apeleaza codul cu un set de date pentru care se cunosc rezultatele;
dupa executie se compara rezultatele obtinute cu cele cunoscute; testul se executa cu
succes daca aceste doua valori coincid sau esueaza in caz contrar
➢ functia describe() grupeaza testele pentru o functionalitate; are doi parametri: un sir
cu textul explicativ si o functie de callback
➢ testarea functionalitatii se face cu functia it(); are doi parametri: un sir cu textul
explicativ si functia de callback in care se apeleaza codul care trebuie testat
➢ atunci cand se compara valori care sunt numere reale se recomanda folosirea functiei
toBeCloseTo() cu precizia dorita