Urmează unde inserarea automată a punctului și virgula poate duce la erori

Am urmat un training eficient JavaScript de către Douglas Crockford acum cateva luni. Un lucru care mi-a rămas de atunci este importanța utilizării punctelor și virgulelor explicite în JavaScript. De ceva timp, evit leneș să scriu ; și presupunând că analizorul îmi va face treaba corect pentru mine. În această postare, vreau să prezint câteva exemple care mi-au schimbat mentalitatea.

De ce sunt importante punctele si virgulele explicite in JavaScript

Exemplul 1

Care vă așteptați să fie rezultatul?

const test = () => {
 return 
 {
  ok : true
 }
}
console.log(test())

Te-ai aștepta ca rezultatul să fie un object cu o proprietate ok setat la true. Dar, în schimb, rezultatul este undefined. Acest lucru se datorează faptului că, din moment ce aparatul ortopedic începe pe o nouă linie, completarea automată a punctului și virgula schimbă codul de mai sus în acest fel:

const test = () => {
 return;
 {
  ok : true
 }
}

Remediați: Utilizați acolade din dreapta de întoarcere și punct și virgulă explicit:

const test = () => {
 return {
  ok : true
 }
};

Exemplul 2

const a = 1
const b = 2
(a+b).toString()

Ce crezi că se întâmplă în codul de mai sus? Primim o eroare Uncaught ReferenceError: b is not defined. Acest lucru se datorează faptului că paranteza de pe a treia linie este interpretată ca un argument funcțional. Acest cod este convertit în acest:

const a = 1;
const b = 2(a+b).toString();

În situația în care o instrucțiune de atribuire trebuie să înceapă cu o paranteză la stânga, este o idee bună pentru programator să ofere un punct și virgulă explicită la sfârșitul instrucțiunii precedente, mai degrabă decât să se bazeze pe inserarea automată de punct și virgulă.

– ECMA-International.org

Am învățat să fiu atent când folosesc inserția automată de punct și virgulă.

Lecturi suplimentare –

  1. Reguli automate de inserare a punctelor și virgulelor
  2. Postare pe blog de Bradley Braithwaite inspirată de aceeași prelegere

Ai învățat ceva nou? Ai comentarii? Cunoașteți un DevJoke? Trimite-mi un Tweet @ shrutikapoor08