Documente Academic
Documente Profesional
Documente Cultură
Curs 02 - JavaScript
Curs 02 - JavaScript
Caracteristici
• Limbaj multi-paradigmă:
– Imperativ;
– Funcțional;
– Inițial doar bazat pe obiecte;
– A evoluat în orientat pe obiecte.
• Fundamental asincron;
• Case-sensitive;
• Folosește setul de caractere Unicode;
• Interpretat;
• Cu tipuri dinamice, determinabile și modificabile la
runtime;
• Inițial client-side, dar au apărut și variante server-side.
Client-side JS vs. Server-side JS
• 3 domenii de vizibilitate:
– Global;
– Funcție;
– Bloc.
• Legătura între domenii și rezolvarea conflictelor de
nume;
• Numele interne au prioritate;
• Dacă un nume nu este găsit într-un anumit
domeniu, va fi căutat în domeniile care îl conțin (de
la local la global).
Declararea variabilelor
• var – permite declararea unei variabile cu
vizibilitate în funcție;
• let – permite declararea unei variabile cu
vizibilitate în bloc;
• const – permite declararea unei constante.
Tipuri de date
• String;
• Number;
• BigInt;
• Boolean.
String
• Array;
• Object;
• Date;
• RegExp;
• Function;
• Symbol.
Array
• Null:
– Reprezintă o variabilă cu tip definit, dar care nu ține
referința unui obiect.
• Undefined:
– Reprezintă o variabilă cu tip nedefinit.
Conversii
• String la Number:
– var s = new Number(“5”); //rezultatul este 5
– var s = new Number(“”); //rezultatul este 0
– var s = new Number(“abc”); //rezultatul este NaN
– parseInt(“5.2”); // rezultatul este 5
– parseFloat(“5.2”); // rezultatul este 5.2
• isNaN() se poate utiliza pentru verificare conversiei.
Conversii automate
• Operatori aritmetici;
• Operatori de atribuire;
• Operatori string;
• Operații între tipuri diferite;
• Operatori pe biți;
• Operatori de comparație;
• Alți operatori.
Operatori aritmetici
comma ,
Controlul fluxului
• Definirea:
– const string1 = "A string primitive";
– const string2 = 'Also a string primitive';
– const string3 = `Yet another string primitive`;
• Se pot defini și string-uri multiline care pot conține expresii evaluate;
• Un string multiline este conținut de ``;
• Un string multiline poate funcționa și ca un șablon conținând expresii.
• Accesul la un caracter:
– ‘ cat ‘.charAt(1) // întoarce “a“
– ‘cat’[1] // întoarce tot “a“
• Compararea:
– “a” > “b”, “a” < “b”;
– str1.toUpperCase() === str2.toUpperCase();
Operații cu string-uri (II)
• Parcurgerea:
– for (let c in s) {console.log(c);}
• Extragerea unui substring:
– “Apple, Banana, Kiwi”.substring(7, 13); // extrage Banana
– “Apple, Banana, Kiwi”.slice(7, 13); // extrage Banana
– “Apple, Banana, Kiwi”.slice(-12, -6); // extrage Banana
• Înlocuirea unui substring:
– “I’m working at ASE”
.replace(/AXWAY/i, “Axway”);
Operații cu string-uri (III)
• Adăugarea:
– let newLength = fruits.push('Orange’);
• Ștergerea:
– let last = fruits.pop(); // șterge de la sfârșit
– let first = fruits.shift(); // șterge de la început
– let removedItem = fruits.splice(index, 1); // șterge un
element de la index
– let removedItems = fruits.splice(index, n); // șterge n
elemente începând de la index
Funcții
• Definirea unei funcții:
– function f(a, b, c) { /*instrucțiuni*/ }
– const f = function(a, b, c) { /*instrucțiuni* /}
• Apelarea unei funcții:
– f(1, 3, 4); // valid
– f(1); // valid, b și c undefined
– f(...[1, 2, 3]); // valid
– let p = f; p(1, 2, 3); // valid
Funcții (II)
• Definirea obiectelor:
– var person = {name: ”Iulian”};
– var person = new Object();
person.name = “Iulian”;
person[“name”] = “Iulian”;
– var person = JSON.parse(`{
“name”: “Iulian”
}`);
Proprietățile unui obiect
• Capturing:
– Evenimentul trece mai întâi prin lanțul strămoșilor până la
elementul care l-a declanșat.
– Propagarea poate fi oprită prin apelul event.preventDefault().
• Bubbling:
– Când ajunge un eveniment la elementul care l-a
declanșat, acesta execută mai întâi handler-urile pe el,
apoi pe părintele său, apoi pe tot parcursul altor strămoși.
Tratarea excepțiilor
• JavaScript are
un mecanism
clasic de
tratare a
excepțiilor cu
throw, try,
catch și
finally.
Promisiuni