A JavaScriptben az adattípusokat két fő csoportba sorolják: primitív adattípusok és referenciaadattípusok, és két különböző memóriában tárolódnak verem és kupac.

Megjegyzés: ha nem ismeri a stack and heap memóriát, vagy nem tud többet arról, látogassa meg a másik történetemethttps://medium. com/@sagarkarotia/stack-vs-heap-memory-in-javascript-cd595bc7721e

ezek az előre meghatározott adattípusok, amelyeket a JavaScript nyelv biztosít, és a veremmemóriában tárolódnak. A JavaScriptben hat primitív adattípus létezik:

  1. Karakterlánc: Egyszeres (‘’) vagy dupla (“”) idézőjelbe zárt karaktersorozatot jelöl.
  2. Szám: egész számokat és lebegőpontos számokat is jelent.
  3. Logiai: bináris értéket jelöl, true vagy false.
  4. Null: bármely érték szándékos hiányát jelzi.
  5. Nem definiált: Olyan változót jelöl, amely deklarálva van, de nincs hozzárendelve hozzá érték.
  6. Szimbólum: Az ECMAScript 6-ban (ES6) bevezetett szimbólumok egyediek, és tulajdonságkulcsként használhatók az objektumokban.

Referencia adattípus:

A referenciaadattípusok összetettebb adatstruktúrák, amelyek több értéket is tartalmazhatnak, és a kupacmemóriában tárolódnak. A JavaScriptben két referenciaadat-típus létezik:

  1. Objektum: kulcs-érték párok (tulajdonságok és módszerek) gyűjteményét képviseli. Az objektumok objektumliterálok, konstruktor függvények vagy osztályok használatával hozhatók létre.

2. Tömb: Egy speciális típusú objektum, amely egy index által elérhető, rendezett értékgyűjteményt tartalmaz. A tömbök beépített metódusokkal rendelkeznek a különféle műveletekhez.

Értsük meg a következő példával:

Amikor létrehozunk egy primitív adattípusú változót, a hozzárendelt memória a num1 és a num2 veremben van, a változók különböző memóriát kapnak a veremben,

A fenti kódban azt látja, hogy a num1-et a num2-be másoltam, majd a num1-et kettővel növeltem, de a num2 értékek nem változtak, és nyilvánvaló, hogy ha növeljük a num1-et a num1 változásai nem tükröződnek a num2-ben.

De a referencia típusú adateredményben különbség jön ki, nézzük meg, mi történik, mi történik, referenciatípusban csinálunk valamit.

A referencia adattípusban, amikor létrehozunk egy tömböt és objektumot, a hozzárendelt memória kupacban van, de a referencia típusú adattár címe a veremben, amely a kupacmemóriára hivatkozik, lásd a példát. egyértelműbb legyen

amint a fenti kódrészletben látjuk, hogy az arr1-et átmásoltam az arr2-be, és egy memóriaterületet kaptak a kupacban, nem pedig két különbséget, és a két azonos cím a veremben van tárolva két tömbhöz, ezek a címek a kupacra vonatkoznak. memória . amikor a referencia adattípust másoltuk, akkor a kupacmemória hivatkozását vagy címét másolná, amint fentebb látható

így ha bármilyen változtatást végzünk az arr1-ben, az tükrözni fogja az arr2ben bekövetkezett módosításokat is, mert az arr1 és az arr2 mindkettőnek ugyanaz a címe, amely ugyanarra a memóriaterületre utal, ahogyan a fenti példákban is látható

ha nem szeretné, hogy az arr1ben módosításokat hajtsunk végre, az az arr2ben is tükrözi a módosításokat, akkor klónozni kell a tömböt, nem pedig másolni . amikor az arr1-et arr2-be klónozzuk, új memóriaterületet hoz létre a kupacban és új címet a veremben

itt van három különböző két klón tömb

Megjegyzés: ha szeretné megtudni, hogyan működik a szeletelés módszer, megteheti történetemethttps://medium.com/@sagarkarotia/javascript-array-manipulation-understanding- a szelet és a splice-6e10aed01380 közötti különbségek