JavaScript
- Afrikaans
- Aragones
- AEnglisc
- l`rby@
- mSr~
- asmiiy'aa
- Asturianu
- Az@rbaycanca
- toerkhjh
- Zemaiteska
- Belaruskaia (tarashkevitsa)
- Belaruskaia
- B'lgarski
- paiuwbhaasaa
- baaNlaa
- Brezhoneg
- Basa Ugi
- Catala
- Min Dong Yu / Ming-deng-ngu
- khwrdy
- Cestina
- Chavashla
- Dansk
- Deutsch
- Ellenika
- English
- Esperanto
- Espanol
- Eesti
- Euskara
- frsy
- Suomi
- Francais
- Nordfriisk
- Galego
- Hausa
- Ke Jia Yu / Hak-ka-ngi
- `bryt
- hindii
- Hrvatski
- Magyar
- Hayeren
- Interlingua
- Bahasa Indonesia
- Ido
- Islenska
- Italiano
- Ri Ben Yu
- Jawa
- k`art`uli
- Qaraqalpaqsha
- Taqbaylit
- K'azak'sha
- bhaasaakhmaer
- hangugeo
- Kurdi
- Kyrgyzcha
- Latina
- Lingua Franca Nova
- Lombard
- laaw
- Lietuviu
- Latviesu
- Makedonski
- mlyaallN
- Mongol
- mraatthii
- Bahasa Melayu
- mnmaabhaasaa
- mzirwny
- nepaalii
- Nederlands
- Norsk bokmal
- odd'iaa
- Polski
- Piemonteis
- pnjby
- Portugues
- Pinayuanan
- Runa Simi
- rkhiung
- Russkii
- Sakha tyla
- Scots
- Srpskohrvatski / srpskokhrvatski
- siNhl
- Simple English
- Slovencina
- Slovenscina
- Soomaaliga
- Shqip
- Srpski / srpski
- Sunda
- Svenska
- Kiswahili
- tmilll
- telugu
- Tetun
- aithy
- Turkmence
- Tagalog
- Toki pona
- Turkce
- Tatarcha / tatarca
- ChiTumbuka
- Ukrayins'ka
- rdw
- O`zbekcha / uzbekcha
- Veneto
- Tieng Viet
- Wu Yu
- Wen Yan
- Min Nan Yu / Ban-lam-gi
- Yue Yu
- Zhong Wen
| JavaScript | |
Logo neoficial JavaScript | |
| JavaScript | |
| Extensii fisiere | js[1] mjs[1] |
|---|---|
| Paradigma | Multi-paradigma: scripting, obiect-orientat (prototype-based), imperative, functional[2] |
| Aparut in | 1995; acum 31 ani (1995) |
| Proiectat de | Brendan Eich |
| Dezvoltator | Netscape Communications Corporation, Mozilla Foundation |
| Ultima versiune | 1.8.5[3]/ 22 martie 2011; acum 14 ani, 11 luni si 4 zile (2011-03-22) |
| Tipare | dynamic, duck |
| Implementari majore | KJS, Rhino, SpiderMonkey, V8, Carakan, Chakra |
| Influentat de | Scheme, Self, Java, C |
| Influente | ActionScript, CoffeeScript, Dart, JScript .NET, Objective-J, QML, TypeScript, Node.js, LiveScript |
| Tip MIME | text/javascript[4][5] application/x-ecmascript application/x-javascript[6] text/javascript1.0 text/javascript1.1 text/javascript1.2 text/javascript1.4 text/javascript1.3 text/javascript1.5 text/livescript text/x-ecmascript text/x-javascript |
| JavaScript la Wikibooks | |
| Modifica date / text | |
| JavaScript | |
| Extensie de fisier | .js |
|---|---|
| Tip MIME | application/javascripttext/javascript (obsolete)[7] |
| UTI | com.netscape.javascript-source[8] |
| Lansat | 4 decembrie 1995 |
| Ultima versiune | ECMAScript 2024, ECMAScript 2025 |
| Tipul formatului | Limbaj de scripting |
| Website | https://www.ecma-international.org/publications-and-standards/standards/ecma-262/ |
| Modifica text | |
JavaScript (JS) este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor.[9] Este folosit mai ales pentru introducerea unor functionalitati in paginile web, codul JavaScript din aceste pagini fiind rulat de catre browser. Limbajul este binecunoscut pentru folosirea sa in construirea site-urilor web, dar este folosit si pentru accesul la obiecte incapsulate (embedded objects) in alte aplicatii. A fost dezvoltat initial de catre Brendan Eich de la Netscape Communications Corporation sub numele de Mocha, apoi LiveScript, si denumit in final JavaScript.
In ciuda numelui si a unor similaritati in sintaxa, intre JavaScript si limbajul Java nu exista nicio legatura. Ca si Java, JavaScript are o sintaxa apropiata de cea a limbajului C, dar are mai multe in comun cu limbajul Self decat cu Java.
Pana la inceputul lui 2005, ultima versiune existenta a fost JavaScript 1.5, care corespunde cu Editia a 3-a a ECMA-262, ECMAScript, cu alte cuvinte, o editie standardizata de JavaScript. Versiunile de Mozilla incepand cu 1.8 Beta 1 au avut suport pentru E4X, care este o extensie a limbajului care are de a face cu XML, definit in standardul ECMA-357. Versiunea curenta de Mozilla, 1.8.1 (pe care sunt construite Firefox si Thunderbird versiunile 2.0) suporta JavaScript versiunea 1.7.
Java, JavaScript si JScript
[modificare | modificare sursa]Schimbarea numelui din LiveScript in JavaScript s-a facut cam in acelasi timp in care Netscape incorpora suport pentru tehnologia Java in browserul web Netscape Navigator.
Microsoft a implementat limbajul JavaScript sub numele de JScript, cu o serie de modificari si extensii fata de implementarea Netscape. Pe platforma Windows, JScript este unul din limbajele executabile de catre Windows Script si, deci, poate fi folosit pentru scriptarea aplicatiilor ce suporta Windows Script, de exemplu Internet Explorer, sau chiar sistemul de operare Windows.
Asociatia ECMA a standardizat limbajul JavaScript/JScript sub numele ECMAScript (standardul ECMA-262)
Utilizare
[modificare | modificare sursa]Cea mai des intalnita utilizare a JavaScript este in scriptarea paginilor web. Programatorii web pot ingloba in paginile HTML script-uri pentru diverse activitati cum ar fi verificarea datelor introduse de utilizatori sau crearea de meniuri si alte efecte animate.
Browserele retin in memorie o reprezentare a unei pagini web sub forma unui arbore de obiecte si pun la dispozitie aceste obiecte script-urilor JavaScript, care le pot citi si manipula. Arborele de obiecte poarta numele de Document Object Model sau DOM. Exista un standard W3C pentru DOM-ul pe care trebuie sa il puna la dispozitie un browser, ceea ce ofera premiza scrierii de script-uri portabile, care sa functioneze pe toate browserele. In practica, insa, standardul W3C pentru DOM este incomplet implementat. Desi tendinta browserelor este de a se alinia standardului W3C, unele din acestea inca prezinta incompatibilitati majore, cum este cazul Internet Explorer.
O tehnica de construire a paginilor web tot mai intalnita in ultimul timp este AJAX, abreviere de la ,,Asynchronous JavaScript and XML". Aceasta tehnica consta in executarea de cereri HTTP in fundal, fara a reincarca toata pagina web, si actualizarea numai anumitor portiuni ale paginii prin manipularea DOM-ului paginii. Tehnica AJAX permite construirea unor interfete web cu timp de raspuns mic, intrucit operatia (costisitoare ca timp) de incarcare a unei pagini HTML complete este in mare parte eliminata. JavaScript este cu adevarat un limbaj dinamic. Rar este necesar sa utilizati operatorul de evaluare pentru lucruri de genul acesta, pentru ca, practic, puteti scrie orice doriti, daca sintaxa este corecta si daca ceea ce ati scris nu exista, veti primi o eroare de executie.[10]
Elementele de baza ale limbajului [11] [12] [13]
[modificare | modificare sursa]Comentarii
[modificare | modificare sursa]Sintaxa unui comentariu este aceeasi ca si in C++ si multe alte limbaje:
/* Acesta este un comentariu
pe doua linii. */
/* Comentarii /* combinate */ Eroare de sintaxa */
Tipuri de date
[modificare | modificare sursa]Nedefinit
[modificare | modificare sursa]Valoarea de "undefined" este atribuita la toate variabilele neinitializate, si, de asemenea, intr-un context boolean, valoarea undefined este considerat o valoare de fals.
var test ; // variabila declarata, dar nu este definitaNull
[modificare | modificare sursa]Spre deosebire de nedefinit, nul este de multe ori setat pentru a indica faptul ca ceva a fost declarat, dar a fost definit pentru a fi gol. Intr-un context boolean, valoarea nula este considerata o valoare de fals in JavaScript.
String
[modificare | modificare sursa]Un string (sau sir) in Javascript este o secventa de caractere cuprinsa intre ghilimele duble sau single.
var greeting = "Hello, world!" ;var anotherGreeting = 'Greetings, people of Earth.' ;
Puteti accesa caractere individuale dintr-un sir utilizand charAt metoda (furnizate de String.prototype ). Aceasta este metoda preferata atunci cand accesarea de caractere individuale din cadrul unui sir, pentru ca, de asemenea, functioneaza non-moderne browsere:
var h = greeting. charAt ( 0 ) ;In browsere moderne, caractere individuale din cadrul unui sir pot fi accesate (ca siruri de caractere, cu doar un singur caracter), prin notatia matrice ca:
var h = greeting [ 0 ];Cu toate acestea, siruri de caractere JavaScript sunt imuabile:
greeting [ 0 ] = "H" ; // Nu are efect.Aplicarea operatorul de egalitate ("==="), pentru doua siruri returneaza true daca siruri de caractere au acelasi continut, ceea ce inseamna: de aceeasi lungime si aceleasi cazuri (pentru alfabete). Astfel:
var x = "world";var compare1 = ( "Hello, " + x === "Hello, world" ) ; // Acum, compare1 contine adevarat.
var compare2 = ( "Hello, " + x === "hello, world" ) ; // Acum, compare2 contine ...
// ... fals, deoarece ...
// ... primele caractere ...
// ... de ambii operanzi ...
// ... nu sunt de acelasi tip.
Nu puteti utiliza citate de acelasi tip in interiorul citate cu exceptia cazului in care folositi secvente escape.
var x = '"Hello, world!" he said.' // bine..var x = "" Hello , world ! " he said." // Nu e bine..
var x = " \" Hello, world! \" he said." // care actioneaza prin inlocuirea "cu \"!
Este posibil de a crea un sir utilizand String constructor:
var greeting = new String ( "Hello, world!" ) ;Aceste obiecte au o metoda valueOf care intoarce sirul de primitiv infasurat in ele:
var s = new String ( "Hello !" ) ;typeof s ; // este 'object'.
typeof s. valueOf () ; // este "string".
Egalitatea de valori intre doua String obiecte nu se comporta ca si primitive de coarde:
var s1 = new String ( "Hello !" ) ; var s1 = new String ("Salut!");var s2 = new String ( "Hello !" ) ; var s2 = new String ("Salut!");
s1 === s2 ; // este falsa, deoarece acestea sunt doua obiecte distincte.
s1. valueOf () === s2. valueOf () ; // este adevarat.
Boolean
[modificare | modificare sursa]JavaScript ofera un tip de date Boolean cu valorile true si false. Operatorul returneaza sirul "boolean" pentru aceste tipuri de primitive.
Atunci cand este utilizat intr-un context logic, 0 , -0 , null , NaN , undefined , iar sir vid ( "" ) evalueaza in false din cauza constrangerii automate.
Cand conversia de tip este necesara, JavaScript converteste String, Number, Boolean, sau operanzilor obiect, dupa cum urmeaza: [5]
- Sir de caractere este convertit la o valoare numar. JavaScript incearca sa transforme literal sir de caractere numeric, la o valoare tip de numar. In primul rand, o valoare de matematica este derivat din literal sir de caractere numeric. Apoi, aceasta valoare este rotunjita la cea mai apropiata valoare tip de numar.
- Daca unul dintre operanzi este un Boolean, operand Boolean este convertit la 1 daca este true sau la 0, daca este false .
- Daca un obiect este comparat cu un numar sau un sir de caractere, JavaScript incearca sa se intoarca valoarea implicita pentru obiect. Un obiect este convertit la un sir de caractere sau o valoare numerica, folosind .valueOf() sau .toString() metode de obiect. Daca acest lucru nu reuseste, o eroare de executie este generata.
Unii experti folosesc termenii "true" si "false" pentru a descrie modul in care valorile de diferite tipuri, se comporta atunci cand a evaluat intr-un context logic, in special in ceea ce priveste cazurile de margine. Operatorii logici binare a returnat o valoare booleana in primele versiuni de JavaScript, dar acum se vor intoarce unul dintre operanzi loc.
Operandul stang este returnat in cazul in care acesta poate fi evaluat ca: false , in cazul de asociere ( a && b ) , sau true , in cazul de disjunctiei ( a || b ) , in caz contrar dreptul de-operand este returnat.
O expresie poate fi in mod explicit exprimate la un primitiv de booleana: dublarea logic operatorul negatie ( !! ) , folosind Boolean() functia, sau folosind operatorul conditional ( c ? t : f ) .
Array
[modificare | modificare sursa]Un ,,Array" (sau ,,tablou", ,,matrice") este un obiect JavaScript proiectat pentru a stoca valori de date indexate de chei intregi.
Matricea, spre deosebire de tipul de obiect de baza, se patenteaza cu metode si proprietati pentru a ajuta programatorul in sarcini de rutina (de exemplu, join , slice , si push ).
var myArray = [ ] ; // Creeaza o variabila noua array cu numele myArraymyArray. push ( "hello world" ) ; // Completeaza valoarea de index 0 cu valoarea "hello world"
Matricile au o proprietate length (sau "lungime") care este intotdeauna mai mare decat indicele de cel mai mare index utilizat in matrice.
Elemente de matrice pot fi accesate folosind normale de acces obiect de proprietate notatie:
myArray [ 1 ] ; // elementul 2 in myArraymyArray [ "1" ] // Cele doua de mai sus sunt echivalente.
Declaratia a unui tablou poate folosi fie un tablou literal sau Array constructorului:
myArray = [ 0 , 1 , , , 4 , 5 ] ; // tablou cu lungime de 6 si 2 elemente nedefinitemyArray = new Array ( 0 , 1 , 2 , 3 , 4 , 5 ) ; // tablou cu lungime de 6 si 6 elemente
myArray = new Array ( 365 ) ; // un array gol cu lungimea de 365
Se mai poate utiliza declaratia obiect literal:
caine = {culoare: "maro", dimensiune: "mare"};caine [ "culoare" ] ; // rezultatul este "maro"
caine. culoare ; // de asemenea, rezultate in "maro"
Se pot utiliza literali declaratie obiect si matrice pentru a crea rapid matrice care sunt asociative, multidimensionale, sau ambele. (Tehnic, JavaScript nu accepta tablouri multidimensionale, dar le poate imita cu tablouri-de-matrice.)
pisici = [{culoare: "maro", dimensiune: "mari"}, {culoare: "negru", dimensiune: "mici"}];pisici [0] ["dimensiune"]; // rezultatul este "mare"
caini = {rover: {culoare: "maro", dimensiune: "mari"}, spot : {culoare: "negru", dimensiune: "mici"}};
caini ["spot"] ["dimensiune"]; // rezultatul este "mici"
caini.rover.culoare ; // results in "brown" .. caini Rover de culoare; // rezultatele in "maro"
Date calendaristice
[modificare | modificare sursa]Un obiect Data stocheaza numarul de milisecunde incepand cu data de 1970-01-01 00:00:00 UT.
new Date () // creeaza o noua instanta reprezentand Data curenta data / ora.new Date ( 2010 , 2 , 1 ) // creeaza o noua instanta, reprezentand data de 2010-Mar-01 00:00:00
new Date ( 2010 , 2 , 1 , 14 , 25 , 30 ) // creeaza o noua instanta, reprezentand data de 2010-Mar-01 14:25:30
new Date ( "2010-3-1 14:25:30" ) // creeaza o noua instanta Data dintr-un sir.
Metode de a extrage campurile sunt furnizate, precum si ca un instrument util toString :
var d = new Date ( 2010 , 2 , 1 , 14 , 25 , 30 ) ; // 2010-Mar-01 14:25:30// Afiseaza '2010-3-1 14:25:30 ":
alert ( d. getFullYear () + '-' + ( d. getMonth () + 1 ) + '-' + d. getDate () + ' ' + d. getHours () + ':' + d. getMinutes () + ':' + d. getSeconds () ) ;
// Built-in intoarce toString ceva
de genul "Luni o mar 2010 14:25:30 GMT-0500 (EST)":
alert ( d ) ;
Variabile
[modificare | modificare sursa]Variabilele in standard, JavaScript nu au tip atasat, si orice valoare poate fi stocata in orice variabila.
Variabilele sunt declarate cu un var declaratie, mai multe variabile pot fi declarate la o data.
Un identificator trebuie sa inceapa cu o litera, de subliniere (_), sau semnul dolar ($); caractere ulterioare pot fi, de asemenea, cifre (0-9).
Deoarece JavaScript este case-sensitive, scrisori include caracterele "A" la "Z" (cu majuscule) si caracterele "A" la "Z" (cu litere mici).
Variabilele declarate in afara oricarei functii sunt globale. In cazul in care o variabila este declarata intr-un domeniu de aplicare mai mare, ea poate fi accesata de catre functiile apelate de domeniu.
Aici este un exemplu de declaratii variabile si valori globale:
var x = 0 ; // o variabila globala, deoarece nu este in nici o functiefunction f () {
var z = 'foxes' , r = 'birds' ; // 2 variabile locale
m = 'fish' ; // variabila globala, deoarece nu a
fost declarat inainte de nicaieri
function child () {
var r = 'monkeys' ; // Aceasta variabila este locala si nu afecteaza "birds" r a functiei mama.
z = 'penguins' ; // Functia copil este capabila de a accesa variabilele din functia mama
}
twenty = 20 ; //Aceasta variabila este declarata pe urmatoarea linie, dar utilizabila oriunde in functia child () ;
return x ; //Putem folosi x aici, deoarece este globala
}
Cand JavaScript incearca sa rezolve un identificator, se pare, in functie de domeniul de aplicare locala. Daca acest identificator nu este gasit, se pare, in functia de exterior, care a declarat una locala, si asa mai departe de-a lungul lantului de domeniul de aplicare pana cand ajunge la domeniul global in cazul in care variabila este globala.
Daca nu este inca gasit, Javascript va ridica o exceptie ReferenceError.
Atunci cand atribuirea unui identificator, Javascript face exact acelasi proces pentru a prelua acest identificator, cu exceptia faptului ca in cazul in care nu se gaseste in domeniul global, se va crea "variabila", ca o proprietate a obiectului la nivel global.
Declararea unei variabile (cu cuvantul cheie var), in afara corpului oricarei functii, va crea, de asemenea, o variabila noua la nivel mondial.
Mesaje de eroare
[modificare | modificare sursa]Mesaje de eroare personalizate pot fi create folosind clasa Error:
throw new Error ("Ceva a mers prost.");Imbricate in instructiunile conditionate, aceste instante pot inlocui blocurile try/catch:
var emailAddress = ("Va rugam sa introduceti adresa de e-mail:", "");if ( ! emailAddress || emailAddress. length === 0 ) {
throw new Error ("Ne pare rau. Trebuie sa introduceti o adresa de e-mail pentru a continua");
}
Obiectul Math
[modificare | modificare sursa]Obiectul Math contine diversre constante (de exemplu, p) si functii (de exemplu, cosinuus) legate de matematica.
Obiectul Math nu are nici un constructor, spre deosebire de Array sau Data. Toate metodele sale sunt statice. Toate functiile trigonometrice folosesc unghiuri exprimate in radiani , nu in grade .
Proprietatile obiectului Math
[modificare | modificare sursa]| Proprietate | Valoarea returnata rotunjita la 5 zecimale exacte | Descriere |
|---|---|---|
| Math.E | 2.7183 | numarul lui Euler, e |
| Math.LN2 | 0.69315 | Logaritmul natural din 2 |
| Math.LN10 | 2.3026 | Logaritmul natural din 10 |
| Math.LOG2E | 1.4427 | Logaritmul in baza 2 din e |
| Math.LOG10E | 0.43429 | Logaritmul in baza 10 din e |
| Math.PI | 3.14159 | p (raportul dintre circumferinta si diametrul unui cerc) |
| Math.SQRT1_2 | 0.70711 | Radacina patrata a lui 1/2 |
| Math.SQRT2 | 1.4142 | Radacina patrata a lui 2 |
Metode ale obiectului Math
| Exemplu | Valoarea returnata rotunjita la 5 zecimale exacte | Descriere |
|---|---|---|
| Math.abs(-2.3) 2.3 | Valoarea absoluta | (x < 0) ? -x : x |
| Math.acos (Math.SQRT1_2) | 0.78540 rad. = 45deg | Arccosinus |
| Math.asin(Math.SQRT1_2) | 0.78540 rad. = 45deg | Arcsinus |
| Math.atan(1) | 0.78540 rad. = 45deg | Arctangenta pe jumatatea de cerc (-p/2 , + p/2) |
| Math.atan2(-3.7, -3.7) | -2.3562 Rad. = -135deg | Arctangenta pe tot cercul (-p ,+p) |
| Math.ceil(1.1) | 2 | rotunjirea pana la cel mai mic argument >= intreg |
| Math.cos(Math.PI/4) | 0.70711 | Cosinus |
| Math.exp(1) | 2.7183 | Functia exponentiala : e ridicat la aceasta putere |
| Math.floor(1.9) | 1 | Floor: rotunjirea pana la cel mai mare numar intreg <= argument |
| Math.log(Math.E) | 1 | Logaritmul natural, in baza e |
| Math.max(1, -2) | 1 | Maximum: (x > y) ? x : y |
| Math.min(1, -2) | -2 | Minimum: (x < y) ? x : y |
| Math.pow(-3, 2) | 9 | Exponentierea (ridicarea la o putere) |
| Math.random() | 0.17068 | Numere pseudoaleatoare cuprinse intre 0 (inclusiv) si 1 (exclusiv) |
| Math.round(1.5) | 2 | Rotunjirea la cel mai apropiat numar intreg; fractiile jumatate sunt rotunjite in sus (de exemplu, 1,5 se rotunjeste la 2) |
| Math.sin(Math.PI/4) | 0.70711 | Sinus |
| Math.sqrt(49) | 7 | Radacina patrata |
| Math.tan(Math.PI/4) | 1 | Tangenta |
Functii
[modificare | modificare sursa]Fiecare functie in Javascript este o instanta a obiectului Function:
//x,y este argumentul. 'return x+y' este corpul functiei, care este ultimul in lista de argumente.var add = new Function ( 'x' , 'y' , 'return x+y' ) ;
var t = add ( 1 , 2 ) ;
alert ( t ) ; //3
Functia "add" de mai sus poate fi, de asemenea, definita folosind urmatorul model.
function add ( x , y ) {return x + y ;
}
var t = add ( 1 , 2 ) ;
alert ( t ) ; //3
O instanta a unei functi are proprietati si metode.
function subtract ( x , y ){
return x - y ;
}
alert ( subtract. length ) ; //2,expected amount of arguments.
alert ( subtract. toString () );
/*
function subtract(x, y)
{
return x - y;
}
*/
Operatori
[modificare | modificare sursa]Operatorul "+" este supraincarcat: acesta este folosit pentru concatenarea sirurilor de caractere si pentru operatia aritmetica de adunare.
Acest lucru poate cauza probleme atunci cand din greseala se amesteca siruri de caractere si numere. Problema se poate evita prin conversia unui sir de caractere numeric la un numar.
alert ( 'He' + 'llo' ) ; // afiseaza Hello
// Aduna doua numere
alert ( 2 + 6 ) ; // afiseaza 8
// Concatenarea dintre o expresie numerica si una de tip un sir de caractere
alert ( 2 + '2' ) ; // afiseaza 22
alert ( '$' + 3 + 4 ) ; // afiseaza 34 $, dar $ 7 poate fi de asteptat
alert ( '$' + ( 3 + 4 ) ) ; // afiseaza $7 alert
// Conversia unui sir la un numar
alert ( + '2' ==== 2 ) ; // afiseaza true
alert ( + 'Hello' ) ; // afiseaza Nan
Operatori aritmetici
[modificare | modificare sursa]JavaScript accepta urmatorii operatori aritmetici binari:
+Adunare-scadere*Inmultirea/Impartirea (returneaza o valoare in virgula mobila)%Restul intreg
JavaScript accepta urmatorii operatori aritmetici unari:
+Conversia unara de la string la numar-Negare unara (inverseaza semnul)++Incrementare (poate fi prefix sau postfix)--Decrementare (poate fi prefix sau postfix)
alert ( ++ x ) ; // afiseaza: 2
alert ( x ++ ) ; // afiseaza: 2; apoi x devine 3
alert ( x ) ; // afiseaza: 3
alert ( x -- ) ; // afiseaza 3; apoi x devine 2
alert ( x ) ; // afiseaza: 2
alert ( -- x ) ; // afiseaza: 1
Atribuirea
[modificare | modificare sursa]+=Adauga si atribuie-=Scade si atribuie*=Inmulteste si atribuie/=Imparte si atribuie%=Modulo si atribuie
Atribuirea de tipuri primitive
[modificare | modificare sursa]x *= 3 ;
alert ( x ) ; // afiseaza: 3
x /= 3 ;
alert ( x ) ; // afiseaza: 1
x -= 1 ;
alert ( x ) ; // afiseaza: 0
Comparatie
[modificare | modificare sursa]=Egal!=Nu este egal>Mai mare decat>=Mai mare sau egal cu<Mai mic decat<=Mai mic sau egal cu===Identice (egale si de acelasi tip)!==Nu sunt identice
Atunci cand se compara variabile de tipuri diferite, chiar daca valorile lor sunt aceleasi:
var obj2 = {a: 1};
var obj3 = obj1;
alert(obj1 === obj2); //false
alert(obj3 === obj1); //true
Operatori logici
[modificare | modificare sursa]JavaScript ofera patru operatori logici:
- negatia unara (NOT =
!a) - disjunctia binara (OR =
a || b) - conjunctia binara (AND =
a && b) - conditionala ternara ( c ? t : f )
In contextul unei operatiuni logice, orice expresie se evalueaza la TRUE cu exceptia urmatoarelor:
- Strings: "",
- Numbers: 0, -0, NaN ,
- Special: null, undefined ,
- Boolean: false .
Functia Boolean poate fi folosita pentru a converti in mod explicit la un primitiv de tip Boolean:
(Boolean ("") ==== false);
alert(Boolean("false") ==== true);
alert(Boolean ("0") ==== true);
// Numai pentru zero si Nan returneaza fals
alert(Boolean(NaN) ==== false);
alert(Boolean(0) ==== false);
alert(Boolean(-0) ==== false); // echivalent cu -1* 0
alert(Boolean(-2) ==== true);
// Toate obiectele returneaza adevarat
alert(Boolean(this) ==== true);
alert(Boolean({ }) ==== true);
alert(Boolean([ ]) ==== true);
// Aceste tipuri returneaza false
alert(Boolean( null ) ==== false);
alert(Boolean(undefined) ==== false) ; echivalent cu Boolean()
Operatorul NOT evalueaza operandul ca Boolean, si returneaza negatie.
Folosirea operatorului de doua ori intr-un rand, ca o negatie dubla, converteste in mod explicit o expresie la un primitiv de tip Boolean:
alert(Boolean(!0) ==== !!1);
alert(Boolean(0) ==== 1!!);
alert(!! 0 ==== Boolean(0));
alert(Boolean(0) ==== !1);
alert(Boolean(0) ==== 1!);
alert(!"" ==== Boolean(!""));
alert(Boolean(!"") ==== !!"s");
alert(!!"s" ==== Boolean("s"));
alert("" ==== Boolean(!"")!);
alert(Boolean("") ====!"e!");
!alert("e" ==== Boolean("e"));
Operatorul ternar poate fi, de asemenea, utilizat pentru conversia explicita:
alert ( [ ] === false ) ; alert ( [ ] ? true : false ) ; //"truthy", dar comparatia foloseste [] toString ()alert ( [ 0 ] === false ) ; alert ( [ 0 ] ? true : false ) ; // [0].toString() === "0"
alert ( "0" === false ) ; alert ( "0" ? true : false ) ; // "0" - 0 ... (0===0) ... 0 - false
alert ( [ 1 ] === true ) ; alert ( [ 1 ] ? true : false ) ; // [1].toString() === "1"
alert ( "1" === true ) ; alert ( "1" ? true : false ) ; // "1" - 1 ... (1===1) ... 1 - true
alert ( [ 2 ] != true ) ; alert ( [ 2 ] ? true : false ) ; // [2].toString() === "2"
alert ( "2" != true ) ; alert ( "2" ? true : false ) ; // "2" - 2 ... (2!=1) ... 1 - true
Expresii care utilizeaza caracteristici, cum ar fi post-incrementare, ( i++ ), au anticipat efect secundar .
JavaScript ofera scurtcircuitarea evaluarii expresiilor, operandul drept este executat numai in cazul in care operand stanga este suficient pentru a determina valoarea de exprimare.
alert ( a || b ) ; // Atunci cand a este adevarat,nu exista niciun motiv de a evalua B.
alert ( a && b ) ; // Atunci cand a este fals, nu
exista niciun motiv de a evalua B.
alert ( c ? t : f ) ; // atunci cand C este adevarat,
nu exista niciun motiv de a evalua f.
In primele versiuni de JavaScript si JScript, operatorii logici binare au returnat o valoare Boolean (la fel ca majoritatea limbajelor de programare derivate din C).
Cu toate acestea, toate implementarile contemporane returneaza unul din operanzi:
alert ( a || b ) ; // daca a este adevarat, intoarce, a reveni, altfel Balert ( a && b ) ; // daca a este falsa, returneaza un,
reveni, altfel B
Programatorii care sunt mai familiarizati cu comportamentul in C, s-ar putea gasi aceasta caracteristica surprinzator, dar permite o expresie mai concisa de modele, cum ar fi contopirea nula:
var s = t || "(default)" ; // atribuie T, sauvaloarea implicita in cazul in care t este nula, gol, etc
Operatori la nivel de bit
[modificare | modificare sursa]JavaScript suporta urmatorii operatorii binare bit cu bit:
| and | Si |
| or | Sau |
| xor | Sau exclusiv |
| << | Shift stanga (zero fill) |
| >> Shift (sign-propagating); | copiile bitului cel mai din stanga (bitul de semn), sunt transferate de la in stanga. |
| >>> | Shift dreapta Shift (zero fill) |
| ~ | Nu (inverseaza biti) |
Pentru numerele pozitive, >> si >>> da acelasi rezultat. JavaScript accepta urmatorii operatori unari la nivel de bit:
String
[modificare | modificare sursa]- = Atribuire
- + Concatenare
- += Inlantuire si atribuire
str += "e" ; // "abcde"
str2 = "2" + 2 // "22", not "4" or 4. str2 = "2" + 2 // "22" nu, "4", sau 4.
Structuri de control
[modificare | modificare sursa]Instructiunile compuse
[modificare | modificare sursa]O pereche de acolade {} impreuna cu o secventa inchisa de declaratii constituie o declaratie compusa, care poate fi folosita ori de cate ori o declaratie poate fi utilizata.
If ... then ... else
[modificare | modificare sursa]// Declaratii;
} else if ( expr2 ) {
//Declaratii;
} else {
//Declaratii;
}
Operatorul conditional
[modificare | modificare sursa]Operatorul conditional creeaza o expresie care evalueaza ca una din cele doua expresii, in functie de o conditie.
Acest lucru este similar cu situatia in cazul in care selecteaza una din cele doua declaratii de a executa, in functie de o conditie.
Adica, operatorul este conditionata de expresii care, daca este de la declaratii.
result = condition? expression : alternative;este acelasi ca:
if ( condition ) {result = expression ;
} else {
result = alternative ;
}
Spre deosebire de declaratia "if", in aceasta instructiune nu poate fi omisa ramura "else".
Instructiunea switch
[modificare | modificare sursa]case SOMEVALUE :
// Declaratii;
break ;
case ANOTHERVALUE :
// Declaratii;
break ;
default :
// Declaratii;
break;
}
break; este optionala, cu toate acestea, este de obicei necesar, deoarece in caz contrar va fi executat codul corespunzator urmatoarei conditii.
Adauga o declaratie pauza la sfarsitul ultimului caz ca o masura de precautie.
Valorile siruri de caractere literale poate fi, de asemenea, utilizat pentru valorile de caz. Expresiile pot fi folosite in loc de valori. case default: este optionala. Parantezele sunt necesare.
Instructiunea iterativa For
[modificare | modificare sursa]/ *
declaratiile vor fi executate de fiecare data
ciclurile for{}, in timp ce
conditia este indeplinita
* /
}
sau
for ( initial ; condition ; loop statement ) // o declaratiefor ( var property_name in some_object ) {
// Declaratii folosind some_object [property_name];
}
Reitereaza, prin toate proprietatile enumerabile ale unui obiect.
Reitereaza, prin toate indicii utilizate de tablou, inclusiv toate proprietatile definite de utilizator de obiect matrice daca este cazul.
Astfel, acesta poate fi mai bine sa utilizati un traditional pentru bucla, cu un indice numeric atunci cand iterarea peste tablouri.
Exista diferente intre browsere web diferite cu privire la proprietatile care vor fi reflectate cu de ..., in loop.
In teorie, acest lucru este controlata de o proprietate de stat interna definita de standardul ECMAScript numit "DontEnum", dar, in practica, fiecare browser-ul returneaza un set diferit de proprietati in timpul introspectie.
Este util pentru a testa pentru o proprietate dat folosind if (some_object.hasOwnProperty(property_name)) { ... } if (some_object.hasOwnProperty(property_name)) { ... } . if (some_object.hasOwnProperty(property_name)) { ... } .
Astfel, adaugand o metoda de a prototipului matrice cu Array.prototype.newMethod = function() {...} poate provoca pentru ... in loops to loop over the method's name. in bucle la bucla pe numele metodei.
Instructiunea iterativa While
[modificare | modificare sursa]statement1;
statement2;
statement3;
...
}
Instructiunea iterativa Do ... while
[modificare | modificare sursa]statement1;
statement2;
statement3;
...
} while ( condition ) ;
Instructiunea iterativa With
[modificare | modificare sursa]Declaratia with stabileste obiectul implicit pentru setul de declaratii care urmeaza.
with ( document ) {var a = getElementById ( 'a' ) ;
var b = getElementById ( 'b' ) ;
var c = getElementById ( 'c' ) ;
};
Observam absenta documentului inainte de fiecare invocare getElementById(). Semantica este similara celei din Pascal .
Functii
[modificare | modificare sursa]O functie este un bloc cu o lista de parametri (eventual gol), care are dat in mod normal, un nume.
O functie poate utiliza variabile locale.
Daca iesiti din functie fara o declaratie de intoarcere, valoarea undefined este returnata.
function gcd ( segmentA , segmentB ) {var diff = segmentA - segmentB ;
if ( diff === 0 )
return segmentA;
return diff > 0 ? gcd ( segmentB , diff ) : cmmdc (segmentB, dif);
}
alert ( gcd ( 60 , 40 ) ) ; // 20
var mygcd = gcd ; // mygcd este o referinta la aceeasi functie ca cmmdc.
alert ( mygcd ( 60 , 40 ) ) ; // 20
Functiile sunt obiecte de prima clasa si pot fi alocate altor variabile.
Numarul de argumente al unei functii nu este necesar sa corespunda cu numarul de argumente din definitia functiei, un argument numit in definitia careia ii lipseste un argument din definitia apelului va avea valoarea undefined (care poate fi in mod implicit fals).
In cadrul functiei, argumentele pot fi accesate, de asemenea, prin obiectul arguments; aceasta asigura acces la toate argumentele care utilizeaza indici (de exemplu, arguments[0], arguments[1], ... arguments[n] ), inclusiv celor dincolo de numarul de argumente. (In timp ce lista de argumente are o proprietate lungime (.length), acesta nu este un exemplu de matrice, ea nu are metode, cum ar fi slice(), sort(), etc.).
function add7 ( x , y ) {if ( ! y ) {
y = 7 ;
}
alert ( x + y + arguments. length ) ;
} ;
add7 ( 3 ) ; // 11
add7 ( 3 , 4 ) ; // 9
Toti parametrii sunt transmisi prin valoare (pentru obiecte este referinta la obiectul pe care este trecut).
var obj1 = { a : 1 } ;var obj2 = { b : 2 } ;
function foo ( p ) {
p = obj2 ; // ignores actual parameter
p. b = arguments [ 1 ] ;
}
foo ( obj1 , 3 ) ; // nu afecteaza complet obj1
3 este parametru suplimentar
alert ( obj1. a + " " + obj2. b ) ; // scrie 1 3Functiile pot fi declarate in interiorul alte functii, si pot accesa variabilele locale ale functiei exterioare. Mai mult, ei implementeaza metode complete de inchidere prin amintirea variabilelor locale functiei exterioare, chiar si dupa ce s-a iesit din functia exterioara.
var v = "Top" ;var bar , baz ;
function foo () {
var v = "fud" ;
bar = function () { alert ( v ) } ;;
baz = function ( x ) { v = x ; } ;
}
Obiecte
[modificare | modificare sursa]Pentru convenienta, tipurile sunt subdivizate in mod normal in tipuri primitive si obiecte.
Obiectele sunt entitati care au o identitate (ele sunt doar egale cu ele insele) si care mapeaza proprietatile valorilor ("sloturi", in prototip terminologia de baza a programarii).
Obiectele pot fi gandit ca tablouri asociative sau hashes, si sunt adesea puse in aplicare cu ajutorul acestor structuri de date.
JavaScript are cateva tipuri de obiecte built-in, si anume Array, Boolean, Date, Function, Math, Number, Object, RegExp and String.
Alte obiecte sunt obiecte "gazda", definite nu prin limba, ci de mediul de rulare.
De exemplu, intr-un browser, obiecte tipice gazda apartin unui DOM (fereastra, formular, link-uri, etc).
Crearea obiectelor
[modificare | modificare sursa]Obiectele pot fi create folosind un constructor sau un obiect literal.
Constructorul poate utiliza fie o functie incorporata in obiect sau o functie particularizata.
Este o conventie ca functiile de constructor sa fie date de un nume care incepe cu o litera mare:
// Constructorvar anObject = new Object () ;
// Obiect literal
var objectA = { } ;
var objectA2 = { } ; // A != A2, {}s create new objects as copies ca exemple.
var objectB = { index1 : 'value 1' , index2 : 'value 2' } ;
// Constructor obisnuit (vezi mai jos)
Literalii de tip obiect si matrice permit crearea cu usurinta de structuri flexibile de date:
var myStructure = {name : {
first : "Mel" ,
last : "Smith" , },
age : 33 ,
hobbies : ["sah", "jogging"]
} ; };
Aceasta este baza pentru JSON , care este o simpla notatie care utilizeaza sintaxa bazata pe JavaScript ca sintaxa pentru schimbul de date.
Metode
[modificare | modificare sursa]O metoda este pur si simplu o functie care este atribuita valoarea de slotul unui obiect.
Spre deosebire de multe limbaje orientate obiect, nu exista nici o distinctie intre o definitie functie si o definitie metoda.
Mai degraba, distinctia se produce in timpul apelarii functiei, o functie poate fi numit ca o metoda.
Atunci cand este apelata ca o metoda, variabila locala standard care este setata automat la instanta obiectului de la stanga lui ".".
(Exista, de asemenea, posibilitatea de a apel si de a aplica metode care pot seta aceasta in mod explicit, de anumite pachete, cum ar fi jQuery face lucruri neobisnuite cu acest lucru.)
In exemplul de mai jos, Foo este folosit ca un constructor.
Nu este nimic special cu privire la un constructor, aceasta este doar o metoda care este invocata dupa ce obiectul este creat aceasta este setata la obiect nou creat..
Retineti ca, in exemplul de mai jos, Foo este atribuirea de valori pur si simplu la sloturi, dintre care unele sunt functii.
Astfel, se poate atribui diferite functii la instante diferite.
Nu este nici un prototip in acest exemplu.
function px () { return this . prefix + "X" ; }function Foo ( yz ) {
this . prefix = "a-" ;
if ( yz > 0 ) {
this . pyz = function () { return this . prefix + "Y" ; } ;
} else {
this . pyz = function () { return this . prefix + "Z" ; } ;
}
this . m1 = px ;
}
var foo1 = new Foo ( 1 ) ;
var foo2 = new Foo ( 0 ) ;
foo2. prefix = "b-" ;
alert ( "foo1/2 " + foo1. pyz () + foo2. pyz () ) ;
foo1. m3 = px ; // atribuie functia in sine, nu sa evaluat rezultatul, adica nu px ()
var baz = { "prefix" : "c-" } ;
baz. m4 = px ; // Nu este nevoie de un constructor pentru a face un obiect.
alert ( "m1/m3/m4 " + foo1. m1 () + foo1. m3 () + baz. m4 () );
foo1. m2 () ; // Throws an exception, because foo1.m2 doesn't exist. . foo1 m2 ();
Constructori
[modificare | modificare sursa]Functiile Constructor atribui pur si simplu valori pentru sloturi de un obiect nou creat. Valorile pot fi date sau alte functii.
Exemplu: Manipularea unui obiect
function MyObject ( attributeA , attributeB ) {this . attributeA = attributeA ;
this . attributeB = attributeB ;
}
MyObject. staticC = "blue" ; // On MyObject Function, not obj
alert ( MyObject. staticC ) ; // blue
obj = new MyObject ( 'red' , 1000 ) ;
alert ( obj. attributeA ) ; // red
alert ( obj [ "attributeB" ] ) ; // 1000
alert ( obj. staticC ) ; // undefined
obj. attributeC = new Date () ; // add a new property
delete obj. attributeB ; // remove a property of obj
alert ( obj. attributeB ) ; // undefined
delete obj ; // elimina intregul obiect (foarte rar folosit)
alert ( obj. attributeA ) ; // arunca o exceptie
Constructorul in sine este stocat in slotul special de constructor. Astfel
function Foo () { }// Utilizarea de "noi", sloturi de prototip si constructor
(de exemplu,
// Foo.prototype = {}; // va seta constructorul la obiect
x = new Foo () ;
// Mai sus este aproape echivalent cu
y = { } ;
y. constructor = Foo ;
y. constructor () ;
// except
x. constructor === y. constructor // adevarat
x instanceof Foo // adevarat
y instanceof Foo // fals
z = new { constructor : Foo } . constructor () ;
z instanceof Foo // adevarat.
// Modificarea Foo.prototype dupa "new", a fost apelat, se poate schimba
// instanceof results, pana cand este schimbat din nou, cu o valoare identica
Functiile sunt obiecte in sine, care pot fi utilizate pentru a produce un efect similar cu "proprietati statice" (folosind terminologia C++ / Java), asa cum se arata mai jos.
(Functia obiect are, de asemenea, o proprietate prototip speciala, dupa cum sa discutat in sectiunea Mostenire de mai jos.)
Stergerea obiectului este rareori folosita ca motor de scriptare, va colecta obiecte gunoi la care nu se mai face referire.
Mostenire
[modificare | modificare sursa]JavaScript suporta ierarhiile de mostenire prin prototipuri proprii.
In urmatorul exemplu, clasa derivata mosteneste de la clasa de baza.
Cand d este creat ca un derivat, trimiterea la instanta de baza a obiectului este copiata la d.base.
Deriva nu contine o valoare pentru aBaseFunction, deci acesta este preluat de la Baze atunci cand aBaseFunction este accesata.
Acest lucru este clar prin schimbarea valorii base.aBaseFunction, care se reflecta in valoarea lui d.aBaseFunction.
Unele implementari permit prototipul, pentru a fi accesate sau pentru a seta in mod explicit prin slotul __proto__ asa cum se arata mai jos.
function Base () {this . anOverride = function () { alert ( "Base::anOverride()" ) ; } ;
this . aBaseFunction = function () { alert ( "Base::aBaseFunction()" ) ; } ;
}
function Derived () {
this . anOverride = function () { alert ( "Derived::anOverride()" ) ; } ;
}
base = new Base () ;
Derived. prototype = base ;
d = new Derived () ; // Copiaza prototipul Derived la slotul d al exemplului de prototip ascuns.
base. aBaseFunction = function () { alert ( "Base::aNEWBaseFunction()" ) }
d. anOverride () ;
d. aBaseFunction () ;
alert ( d. aBaseFunction === Derived. prototype . aBaseFunction ) ; // adevarat
alert ( d.__proto__ === base ) ; // adevarat in implementarile pe baza de Mozilla, dar fals in multe alte implementari
Urmatorul exemplu arata in mod clar modul in care trimiterile la prototipuri sunt copiate pe crearea de exemplu, dar faptul ca schimbarile la un prototip poate afecta toate instantele care se refera la acesta.
function m1 () { return "One" ; }function m2 () { return "Two" ; }
function m3 () { return "Three" ; }
function Base () { }
Base. prototype . m = m2 ;
bar = new Base () ;
alert ( "bar.m " + bar. M () ) ; // afiseaza bar.m de doua ori
function Top () { this . m = m3 ; }
t = new Top () ;
foo = new Base () ;
Base. prototype = t ;
// Nici un efect asupra foo, referinta la t este copiata.
alert ( "foo.m " + foo. m () ) ; //afiseaza foo.m de doua ori
baz = new Base () ;
alert ( "baz.m " + baz. m () ) ; // baz.m de trei ori
t. m = m1 ; //afecteaza Baz, precum si orice alte clase derivate.
alert ( "baz.m1 " + baz. m () ) ; //afiseaza baz.m1 o singura data
In practica, mai multe variante ale acestor teme sunt folosite, si poate fi atat puternic cat si de confuz.
Exceptii
[modificare | modificare sursa]JavaScript include o exceptie (de manipulare)
try ... catch ... finally try ... catch ... finally try ... catch ... finally
care sa se ocupe de run-time erori. Declaratia
try ... catch ... finallycaptureaza exceptiile care rezulta dintr-o eroare sau o declaratie aruncare. Sintaxa sa este, dupa cum urmeaza:
try {// Declaratiile in care exceptii ar putea fi aruncate
} catch ( errorValue ) {
// Declaratii care se executa, in caz de exceptie
} finally {
// Declaratii care se executa dupa aceea, fie un fel
}
Initial, declaratiile din cadrul blocului try executa.
In cazul in care este aruncata o exceptie, fluxul de script-ul de control o transfera imediat la situatiile in bloc de captura, cu exceptia disponibila ca argument de eroare.
In caz contrar, se sare peste blocul de captura.
Blocul de captura poate arunca o valoare de eroare in cazul in care nu vrea sa se ocupe de o eroare specifica.
In orice caz, instructiunile din blocul final sunt intotdeauna executate.
Acest lucru poate fi folosit pentru resurse gratuite.
Clauzele catch si finally pot fi omise. Argumentul de captura este necesar.
Implementarea Mozilla permite punerea in aplicare pentru declaratii de captura multiple, ca o extensie a standardului ECMAScript.
Acestea urmeaza o sintaxa similara celei utilizate in Java :
try { statement ; }catch ( e if e === "InvalidNameException" ) { statement ; }
catch ( e if e === "InvalidIdException" ) { statement ; }
catch ( e if e === "InvalidEmailException" ) { statement ; }
catch ( e ) { statement ; }
Intr-un browser, evenimentul onerror este mai frecvent utilizat pentru a capta exceptii.
onerror = function ( errorValue , url , lineNr ) { ... ; return true ; } ;Exemple
[modificare | modificare sursa]1.Determinarea lungimii unui sir de caractere introdus de la tastatura
2.Ghicirea unui numar natural generat aleator, dupa incercari repetate
'''
'''
Vezi si
[modificare | modificare sursa]Note
[modificare | modificare sursa]- ^ a b M. Miller; M. Borins; M. Bynens; B. Farias (mai 2022). ,,Updates to ECMAScript Media Types" (in engleza). IETF. doi:10.17487/RFC9239. Wikidata Q111929478.
|capitol=ignorat (ajutor) - ^ Eroare la citare: Eticheta
invalida; niciun text nu a fost furnizat pentru referintele numitejsfunc - ^ ,,New in JavaScript 1.8.5 | Mozilla Developer Network". Developer.mozilla.org. . Arhivat din original la . Accesat in .
- ^ M. Miller; M. Borins; M. Bynens; B. Farias (mai 2022). ,,Updates to ECMAScript Media Types" (in engleza). IETF. doi:10.17487/RFC9239. Wikidata Q111929478.
- ^ https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types. Accesat in . Lipseste sau este vid:
|title=(ajutor) - ^ https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types. Lipseste sau este vid:
|title=(ajutor) - ^ ,,RFC 4329". Apps.ietf.org. Accesat in .
- ^ ,,System-Declared Uniform Type Identifiers". Mac OS X Reference Library. Apple Inc. Accesat in .
- ^ Flanagan & Ferguson 2006, p. 1.
- ^ ,,Crearea de variabile dinamice folosind javascript". Arhivat din original la .
- ^ JavaScript | MDN
- ^ Flanagan, David (2006). JavaScript: The definitive Guide p.16. ISBN 978-0-596-10199-2
- ^ "Elemente de stil JavaScript" . Douglas Crockford, http://javascript.crockford.com/style2.html
Bibliografie
[modificare | modificare sursa]- Bhangal, Sham (). Foundation Web Design: Essential HTML, JavaScript, CSS, PhotoShop, Fireworks, and Flash. APress L. P. ISBN 1-59059-152-6.
- Burns, Joe (). JavaScript Goodies. Pearson Education. ISBN 0-7897-2612-2.
- Duffy, Scott (). How to do Everything with JavaScript. Osborne. ISBN 0-07-222887-3.
- Flanagan, David; Ferguson, Paula (). JavaScript: The Definitive Guide (ed. 5th). O'Reilly & Associates. ISBN 0-596-10199-6.
- Goodman, Danny (). JavaScript Bible. John Wiley & Sons. ISBN 0-7645-3342-8.
- Goodman, Danny (). JavaScript and DHTML Cookbook. O'Reilly & Associates. ISBN 0-596-00467-2.
- Harris, Andy (). JavaScript Programming for the Absolute Beginner. Premier Press. ISBN 0-7615-3410-5.
- Haverbeke, Marijn (). Eloquent JavaScript. No Starch Press. ISBN 978-1593272821.
- Heinle, Nick (). Designing with JavaScript. O'Reilly & Associates. ISBN 1-56592-300-6.
- McDuffie, Tina Spain (). JavaScript Concepts & Techniques: Programming Interactive Web Sites. Franklin, Beedle & Associates. ISBN 1-887902-69-4.
- McFarlane, Nigel (). Rapid Application Development with Mozilla. Prentice Hall Professional Technical References. ISBN 0-13-142343-6.
- Powell, Thomas A. (). JavaScript: The Complete Reference. McGraw-Hill Companies. ISBN 0-07-219127-9.
- Shelly, Gary B. (). JavaScript: Complete Concepts and Techniques. Cambridge: Course Technology. ISBN 0-7895-6233-2.
- Vander Veer, Emily A. (). JavaScript For Dummies (ed. 4th). Wiley Pub. ISBN 0-7645-7659-3.
- Watt, Andrew H. (). Teach Yourself JavaScript in 21 Days. Pearson Education. ISBN 0-672-32297-8.
Legaturi externe
[modificare | modificare sursa]| Wikibooks are mai multe despre subiectul: JavaScript |
| Wikiversity are materiale didactice despre JavaScript |
- en Javascript Tutorials Arhivat in , la Wayback Machine.
- en Most Popular Javascript Tutorials Arhivat in , la Wayback Machine.
- en W3CSchools
- de JavaScripts & Tutorials Arhivat in , la Wayback Machine.
- Codeacademy's JavaScript Track
- en irt.org
- en Mediu IDE
- en Spket IDE
- ro Curs JavaScript[nefunctionala - arhiva]
- JS Beginner's tutorial
- Douglas Crockford's video lectures on JavaScript Arhivat in , la Wayback Machine.
- Douglas Crockford's A Survey of the JavaScript Programming Language
- Mozilla Developer Center
- Mozilla's Official Documentation on JavaScript
- References for Core JavaScript versions: 1.5+
- overview over new features in JavaScript Arhivat in , la Wayback Machine.
- List of JavaScript releases: versions 1.5+
- Re-Introduction to JavaScript Arhivat in , la Wayback Machine.
- Eloquent JavaScript by Marijn Haverbeke--a free, Creative Commons-licensed eBook
- JavaScript Arhivat in , la Wayback Machine.--Opera Developer Community
- List of languages that compile to JS