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:
- Karakterlánc: Egyszeres (‘’) vagy dupla (“”) idézőjelbe zárt karaktersorozatot jelöl.
- Szám: egész számokat és lebegőpontos számokat is jelent.
- Logiai: bináris értéket jelöl,
true
vagyfalse
. - Null: bármely érték szándékos hiányát jelzi.
- Nem definiált: Olyan változót jelöl, amely deklarálva van, de nincs hozzárendelve hozzá érték.
- 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:
- 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