Daca proveniti dintr-un limbaj de programare asemanator C, va puteti intreba de ce primul cod JavaScript ES6 este valid, dar al doilea program C (dupa cum stiti bine) va face ca compilatorul sa esueze.

# JavaScript

const numbers = [1, 2, 3, 4, 6]

numbers [4] = 5

console.log (numbers [4]) // print 5 # C

const int numbers [] = {1, 2, 3, 4, 6};

numere [4] = 5; // eroare: variabila numai in citire nu poate fi atribuita

printf (“% d \ n”, numere [4]);

Motivul este pentru ca in C, const defineste o variabila de numai citire care nu poate fi modificata, in timp ce in JavaScript, nu este vorba despre imuabilitatea valorii. Nu indica faptul ca valoarea unei variabile este constanta sau numai in citire. In schimb, creeaza o legatura imuabila (o referinta numai in citire a valorii) si garanteaza ca nu va avea loc nicio realocare. Acestea fiind spuse, urmatorul cod va arunca o eroare in timpul rularii.

numere const = = 1, 2, 3, 4, 6]

numere = [7, 8, 9, 10, 11] // eroare: atribuire variabilei constante

console.log (numere [4])

Pentru a intelege mai bine conceptul de variabila, sa examinam urmatoarea imagine in care se explica relatia generica dintre un identificator de variabila (sau un nume de variabila), valoarea acestuia si memoria fizica.

Variabile si alocarea memoriei.

Dupa cum puteti vedea din schema, un identificator de variabila se refera la o celula de memorie fizica printr-o adresa (referinta) in care este stocata valoarea atribuita variabilei. O variabila numai in citire nu permite schimbarea valorii sale. O referinta numai in citire la valoare pur si simplu nu permite reatribuirea identificatorului variabilei, dar valoarea detinuta de identificatorul insusi poate fi totusi modificata. De exemplu, in JavaScript, atunci cand valoarea este un obiect, obiectul in sine poate fi modificat.

Cum se face o valoare imuabila

Tipurile de date primitive sunt intotdeauna imuabile din cauza naturii lor. Urmatorul fragment de cod explica intuitiv de ce.

# Exemplul 1

const a = 10

a = a + 1 // eroare: atribuirea variabilei constante # Exemplul 2

const isTrue = adevarat

isTrue = fals // eroare: atribuirea variabilei constante # Exemplul 3

const sLower = ‘hello world’

const sUpper = sLower.toUpperCase () // creati un sir nou

console.log (sLower) // print hello world

console.log (sUpper) // print HELLO WORLD

Pentru a face valorile unui obiect imuabile, puteti utiliza Object.freeze (). Cu toate acestea, functioneaza doar pe obiecte pereche proprietate-valoare, ceea ce inseamna ca nu va functiona cu alte obiecte precum Data, Harta si Setarea.

sexo en directo pajas trans
halle berry desnuda pelis porno españolas
maduras tragando semen maduras americanas
descargar peliculas porno incesto madre hijos
guarras.com trio por sorpresa
porno casadas españolas xxx torrent magnet
maduras folladoras incesto jovencitas
aventura en pelotas xxx abuelas a cuatro patas
maduras americanas porno español dinero
abuela porno pillados follando
folladas salvajes videos heroticos
follando rico suegras españolas follando
porno en cine convencional pilladas cagando
potno viejas muy calientes
porno español jovencita porno por el culo
folladas caseras reales travestis meando
moras follando mujeres peludas follando
porno madres peludas peliculas porno traducidas al castellano
se deja follar peliculas eroticas alemanas
mujeres tetudas videos porno trios español

# Exemplul 4

const me = Object.freeze ({nume: „Jacopo”})

me.age = 28

console.log (me.age) // print undefined # Exemplul 5

const arr = Object.freeze ([- 1, 1 , 2, 3])

arr [0] = 0

console.log (arr [0]) // print -1 # Exemplul 6

const me = Object.freeze ({

nume: ‘Jacopo’,

animal de companie: {

tip: ‘caine ‘,

nume:’ Spock ‘

}

})

me.pet.name =’ Rocky ‘

me.pet.breed =’ Ciobanesc german ‘

console.log (me.pet.name) // print Rocky

console.log (me.pet .rasa) // print Shepherd German

Dupa cum puteti vedea in ultimul exemplu, obiectele imbricate dintr-un obiect inghetat pot fi in continuare mutate. Pentru a face valorile obiectului complet imuabile, poate doriti sa utilizati o metoda personalizata deepFreeze (). O alta optiune este de a utiliza Immutable.js, o biblioteca care pur si simplu nu transforma obiectele in imuabile, ci ofera mai degraba multe structuri de date imuabile persistente, inclusiv Lista, Stiva, Harta, OrderedMap, Set, OrderedSet si Record.

var, let sau const?

In ES6, dezvoltatorii nu ar trebui sa foloseasca niciodata var pentru a defini o variabila sau o constanta. De fapt, acum este cel mai slab semnal disponibil atunci cand definiti o variabila in JavaScript.

O variabila bine definita nu trebuie utilizata pentru a reprezenta mai multe concepte. Acest lucru asigura ca codul este mai curat si mai usor de inteles. Deoarece JavaScript const inseamna ca identificatorul nu poate fi reatribuit, este de preferat sa utilizati const pentru toti identificatorii din program care nu ar trebui sa fie reatribuiti. Cu toate acestea, atunci cand identificatorii trebuie sa fie realocati, programatorii ar trebui sa foloseasca let in loc. Acesta este, in general, cazul contoarelor dintr-o constructie de bucla sau de swap de valori in subrutine de algoritmi.

Ia lectia acasa

Recapitularea informatiilor: daca codificati cu ES6, utilizati const in mod implicit, nu utilizati var si folositi let acolo unde este necesara reconectarea✌️️. Daca aveti intrebari despre acest lucru sau despre actualizari, va rugam sa luati legatura cu mine pe social la Jacopo Daeli.