5 cauze frecvente ale erorilor JavaScript (și cum să le evitați)

JavaScript (JS) reprezintă un limbaj de programare extrem de răspândit, cunoscut pentru flexibilitatea și popularitatea sa extinsă. Cu toate acestea, este și un mediu predispus la erori și anomalii, care pot provoca frustrări și dificultăți majorității dezvoltatorilor.

JS este utilizat pe scară largă pentru a intensifica interactivitatea pe partea client a majorității aplicațiilor web. Fără JavaScript, experiența online ar putea fi considerată statică și neinteresantă. Cu toate acestea, complexitatea limbajului poate duce uneori la o relație ambivalentă între dezvoltatori și acesta.

Defecțiunile în JavaScript pot determina aplicațiile să genereze rezultate neașteptate, afectând negativ experiența utilizatorilor. Un studiu realizat de Universitatea din Columbia Britanică (UBC) a investigat cauzele fundamentale și impactul erorilor din JavaScript. Rezultatele studiului au identificat anumite tipare comune care influențează performanța programelor JS.

Iată o diagramă circulară care ilustrează descoperirile cercetătorilor:

În această postare de blog, vom detalia câteva dintre motivele frecvente ale erorilor JavaScript, identificate în studiu (și altele întâlnite frecvent), și vom prezenta metode de a reduce probabilitatea de defecțiuni în aplicațiile dumneavoastră.

Probleme legate de DOM

Modelul Obiect al Documentului (DOM) are un rol esențial în interactivitatea site-urilor web. Interfața DOM permite manipularea conținutului, stilului și structurii unei pagini web. Interacțiunea cu paginile web HTML sau modificarea DOM este scopul principal pentru care a fost creat limbajul de programare JavaScript.

Astfel, chiar și cu apariția tehnologiilor JavaScript de backend, cum ar fi Node.js, lucrul cu DOM reprezintă o parte semnificativă a funcționalității limbajului. Prin urmare, DOM este un punct critic de unde se pot introduce erori în aplicațiile JavaScript.

Nu este surprinzător faptul că studiul privind erorile JavaScript a constatat că problemele legate de DOM sunt responsabile pentru majoritatea defecțiunilor, cu un procent de 68%.

De exemplu, unii programatori JavaScript fac greșeala comună de a accesa un element DOM înainte ca acesta să fie complet încărcat, ceea ce duce la erori de cod.

<!DOCTYPE html>
<html>
<body>
    <script>        
        document.getElementById("container").innerHTML = "Erori și Bug-uri Comune JS";
    </script>
    <div id="container"></div>
</body>
</html>

Dacă codul de mai sus este executat într-un browser precum Chrome, va genera o eroare, vizibilă în consola dezvoltatorului:

Eroarea apare deoarece codul JavaScript este executat în ordinea în care este prezentat într-un document. Prin urmare, browserul nu recunoaște elementul <div> menționat în momentul rulării codului.

Pentru a rezolva această problemă, pot fi folosite diferite abordări. Cea mai simplă soluție este să plasați <div id=”container”></div> înainte de eticheta script. Alternativ, se poate folosi o bibliotecă JavaScript, cum ar fi jQuery, pentru a garanta că DOM este încărcat înainte de a fi accesat.

<!DOCTYPE html>
<html>
<body>
    <div id="container"></div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script>        
        document.getElementById("container").innerHTML = "Erori și Bug-uri Comune JS";
    </script>    
</body>
</html>

Erori Bazate pe Sintaxă

Erorile de sintaxă apar atunci când interpretorul JavaScript nu poate executa un cod incorect din punct de vedere sintactic. Dacă în timpul creării unei aplicații, interpretorul identifică elemente care nu respectă sintaxa standard a limbajului JavaScript, va genera o eroare. Potrivit studiului, astfel de erori sunt responsabile pentru 12% din totalul erorilor din limbaj.

Greșelile gramaticale, cum ar fi lipsa parantezelor sau parantezele neasortate, sunt cauzele principale ale erorilor de sintaxă în JavaScript.

De exemplu, atunci când se utilizează instrucțiuni condiționale pentru a evalua mai multe condiții, omiterea parantezelor necesare poate duce la erori de sintaxă.

Să analizăm următorul exemplu:

if((x > y) && (y < 77) {
        //cod suplimentar aici
   }

Ultima paranteză a instrucțiunii condiționale lipsește. Ați observat greșeala din codul de mai sus?

Să o corectăm:

if ((x > y) && (y < 77)) {
    //cod suplimentar aici
    }

Pentru a evita astfel de erori de sintaxă, este esențial să dedicați timp învățării regulilor gramaticale ale limbajului JavaScript. Prin practică continuă, veți putea identifica ușor greșelile gramaticale și evitați implementarea lor în aplicațiile dezvoltate.

Utilizarea Incorectă a Cuvintelor Cheie `undefined` și `null`

Unii dezvoltatori JavaScript nu știu cum să folosească corect cuvintele cheie `undefined` și `null`. Studiul a arătat că utilizarea incorectă a acestor cuvinte cheie cauzează 5% din toate erorile JavaScript.

Cuvântul cheie `null` este o valoare de atribuire, folosită pentru a indica absența unei valori. În mod surprinzător, `null` este, de asemenea, un obiect JavaScript.

Iată un exemplu:

var codeJS = null;

console.log(codeJS);
    // rezultatul este null

console.log(typeof codeJS);
    // rezultatul este object

Pe de altă parte, `undefined` indică faptul că unei variabile sau unei proprietăți declarate îi lipsește o valoare atribuită. De asemenea, poate sugera că variabila nu a fost declarată. `undefined` este un tip de sine stătător.

Iată un exemplu:

var codeJS;

console.log(codeJS);
    // rezultatul este undefined

console.log(typeof codeJS);
    // rezultatul este undefined

Interesant este că, deși operatorul de egalitate (==) consideră `null` și `undefined` ca fiind egale, operatorul de identitate (===) nu le consideră ca fiind egale.

console.log(null==undefined);
// rezultatul este true

console.log(null===undefined);
// rezultatul este false

Cunoașterea utilizării corecte a cuvintelor cheie `null` și `undefined` vă poate ajuta să evitați introducerea de erori în programele JavaScript.

Metode Nedefinite

O altă cauză frecventă a erorilor în JavaScript este apelarea unei metode fără ca aceasta să fie definită în prealabil. Cercetătorii UBC au constatat că această greșeală cauzează 4% din totalul erorilor JavaScript.

Iată un exemplu:

var coder = {
    name: "Peter",
    age: 27,
    speak() {
        console.log(this.name);
    }
};
coder.speakNow();

Iată eroarea afișată în consola dezvoltatorului Chrome:

Eroarea de mai sus apare deoarece funcția apelată, `speakNow()`, nu a fost definită în codul JavaScript.

Utilizarea Incorectă a Instrucțiunii `return`

În JavaScript, instrucțiunea `return` este folosită pentru a încheia execuția unei funcții și pentru a returna valoarea acesteia. Dacă este folosită incorect, instrucțiunea `return` poate afecta performanța optimă a aplicațiilor. Potrivit studiului, utilizarea incorectă a instrucțiunii `return` este responsabilă pentru 2% din toate erorile în aplicațiile JavaScript.

De exemplu, unii programatori JavaScript fac greșeala de a întrerupe incorect instrucțiunea `return`.

Deși este posibil să separați o instrucțiune JavaScript pe două rânduri și să obțineți rezultatul dorit, separarea instrucțiunii `return` poate cauza probleme în aplicația dumneavoastră.

Iată un exemplu:

function number(n) {
    var add = 5;
    return;
    n + add;
     }
console.log(number(10));

Când codul de mai sus este executat, va fi afișată eroarea `undefined` în consola dezvoltatorului Chrome:

Prin urmare, trebuie să evitați separarea instrucțiunilor `return` în codul JavaScript.

Concluzie

Limbajul de programare JavaScript pe partea client oferă o gamă largă de capabilități pentru a alimenta funcționalitățile aplicațiilor web moderne. Cu toate acestea, dacă nu sunt înțelese particularitățile care guvernează funcționarea limbajului, performanța aplicațiilor dumneavoastră poate fi compromisă.

În plus, dezvoltatorii JavaScript au nevoie de instrumente versatile pentru a depana performanța aplicațiilor lor și pentru a detecta rapid erorile și anomaliile.

Prin urmare, cu un set complet de instrumente de testare, puteți identifica cu încredere problemele care afectează performanța site-ului dumneavoastră. Acesta este un pas esențial pentru a îmbunătăți performanța și a oferi o experiență optimă utilizatorilor.

Vă dorim o programare JavaScript fericită și fără erori!

Articol scris de Alfrick Opidi