Datové typy a struktury JavaScriptu – JavaScript | MDN
Hodnota v JavaScriptu vždy odkazuje na datový typ. Může to být například řetězec nebo číslo.
V JavaScriptu existuje osm základních datových typů. V této kapitole se na ně podíváme obecně a v následujících kapitolách si o každé povíme podrobněji.
Proměnná v JavaScriptu může obsahovat jakákoli data. V jednu chvíli tam může být řetězec a v jinou chvíli číslo:
// Не будет ошибкой let message = "hello"; message = 123456; Programovací jazyky, které to umožňují, se nazývají „dynamicky typované“. To znamená, že existují datové typy, ale proměnné nejsou vázány na žádný z nich.
Číslo
let n = 123; n = 12.345; Číselné Datový typ ( number ) představuje jak celočíselné hodnoty, tak i čísla s plovoucí desetinnou čárkou.
Existuje mnoho operací s čísly, jako je násobení * , dělení / , sčítání + , odčítání – a tak dále.
Kromě regulárních čísel existují tzv. „speciální číselné hodnoty“, které patří k tomuto datovému typu: Infinity , -Infinity a NaN .
- Nekonečno představuje matematické nekonečno ∞. Toto je speciální hodnota, která je větší než jakékoli číslo. Můžeme to získat jako výsledek dělení nulou:
alert( 1 / 0 ); // Infinity Nebo to nastavte explicitně:
alert( Infinity ); // Infinity alert( "не число" / 2 ); // NaN, такое деление является ошибкой Hodnota NaN je „lepkavá“. Jakákoli matematická operace s NaN vrátí NaN:
alert( NaN + 1 ); // NaN alert( 3 * NaN ); // NaN alert( "не число" / 2 - 1 ); // NaN Matematické operace jsou bezpečné
Matematické operace v JavaScriptu jsou „bezpečné“. Můžeme dělat cokoli: dělit nulou, považovat nenumerické řetězce za čísla atd.
Skript se nikdy nezastaví s fatální chybou (nezemře). V nejhorším případě dostaneme NaN jako výsledek exekuce.
Speciální číselné hodnoty jsou číselného typu. Samozřejmě se nejedná o čísla v obvyklém slova smyslu.
Více si o práci s čísly povíme v kapitole Čísla.
BigInt
V JavaScriptu typ čísla nemůže bezpečně zpracovat čísla větší než (2 53 – 1) (tj. 9007199254740991 ) nebo menší než -(2 53 – 1) pro záporná čísla.
Abychom byli přesní, technicky je typ číslo moci ukládejte velká celá čísla (až 1.7976931348623157 * 10 308), ale mimo bezpečný rozsah celých čísel ±(2 53 – 1) dojde k chybě přesnosti, protože ne všechny číslice se vejdou do pevné 64bitové paměti. Proto je možné uložit „přibližnou“ hodnotu.
Například tato dvě čísla (těsně mimo bezpečný rozsah) jsou stejná:
console.log(9007199254740991 + 1); // 9007199254740992 console.log(9007199254740991 + 2); // 9007199254740992 To znamená, že všechna lichá celá čísla větší než (2 53 -1) nelze do typu čísla vůbec uložit.
Ve většině případů stačí bezpečný rozsah čísel od -(2 53 -1) do (2 53 -1), ale někdy potřebujeme celý rozsah opravdu obřích celých čísel bez jakýchkoli omezení nebo chybějících hodnot v něm. Například v kryptografii nebo při použití časového razítka s mikrosekundami.
Do JavaScriptu byl přidán typ BigInt, aby bylo možné pracovat s celými čísly libovolné délky.
Chcete-li vytvořit hodnotu BigInt, musíte přidat n na konec číselného literálu:
// символ "n" в конце означает, что это BigInt const bigInt = 1234567890123456789012345678901234567890n; Protože potřeba používat BigInt čísla se objevuje poměrně zřídka, budeme je zvažovat v samostatné kapitole BigInt. Podívejte se na to, když potřebujete tak velká čísla.
BigInt je aktuálně podporován pouze v prohlížečích Firefox, Chrome, Edge a Safari, ale ne v IE.
Řetězec
Řetězec v JavaScriptu musí být uzavřen v uvozovkách.
let str = "Привет"; let str2 = 'Одинарные кавычки тоже подойдут'; let phrase = `Обратные кавычки позволяют встраивать переменные $`; V JavaScriptu existují tři typy uvozovek.
- Dvojité uvozovky: „Ahoj“.
- Jednoduché uvozovky: ‚Ahoj‘.
- Backticks: „Ahoj“.
Dvojité nebo jednoduché uvozovky jsou „jednoduché“ a v JavaScriptu mezi nimi není žádný rozdíl.
Backticks mají rozšířenou funkčnost. Umožňují nám vložit výrazy do řetězce jejich uzavřením do $ . Například:
let name = "Иван"; // Вставим переменную alert( `Привет, $!` ); // Привет, Иван! // Вставим выражение alert( `результат: $` ); // результат: 3 Výraz uvnitř $ je vyhodnocen a jeho výsledek se stane součástí řetězce. Můžeme tam dát cokoli chceme: název proměnné nebo výraz 1 + 2 nebo něco složitějšího.
Upozorňujeme, že to lze provést pouze v rámci zpětných zaškrtnutí. Jiné citace tuto funkci vkládání nemají!
alert( "результат: $" ); // результат: $ (двойные кавычки ничего не делают) Na struny se podíváme podrobněji v kapitole Struny.
Neexistuje žádný samostatný datový typ pro jeden znak.
Některé jazyky, jako je C a Java, mají samostatný typ pro uložení jednoho znaku, například „a“ nebo „%“. V C a Javě je to char .
V JavaScriptu žádný takový typ neexistuje, existuje pouze typ string. Řetězec může obsahovat nula znaků (být prázdný), jeden znak nebo mnoho znaků.
Booleovský (logický) typ
Booleovský typ může nabývat pouze dvou hodnot: true a false.
Tento typ se obvykle používá k ukládání hodnot ano/ne: true znamená „ano, správně“ a false znamená „ne, nesprávně“.
let nameFieldChecked = true; // да, поле отмечено let ageFieldChecked = false; // нет, поле не отмечено Booleovské hodnoty mohou být také výsledkem srovnání:
let isGreater = 4 > 1; alert( isGreater ); // true (результатом сравнения будет "да") Na booleovské hodnoty se podíváme podrobněji v kapitole Logické operátory.
Význam „null“
Speciální hodnota null nepatří k žádnému z výše popsaných typů.
Tvoří samostatný typ, který obsahuje pouze hodnotu null:
let age = null; V JavaScriptu není null „odkaz na neexistující objekt“ nebo „nulový ukazatel“ jako v některých jiných jazycích.
Je to prostě speciální hodnota, která představuje „nic“, „prázdno“ nebo „hodnota neznámá“.
Výše uvedený kód znamená, že hodnota proměnné věku není známa.
Význam „nedefinováno“
Zvláštní hodnota undefined také stojí mimo. Tvoří ze sebe typ, stejně jako null .
Znamená to „nebyla přiřazena žádná hodnota“.
Pokud je proměnná deklarována, ale není jí přiřazena žádná hodnota, její hodnota bude nedefinovaná:
let age; alert(age); // выведет "undefined" Technicky můžeme přiřadit hodnotu undefined libovolné proměnné:
let age = 123; // изменяем значение на undefined age = undefined; alert(age); // "undefined" …Ale nedoporučuje se to dělat. Hodnota null se obvykle používá k přiřazení „prázdné“ nebo „neznámé“ hodnoty k proměnné a hodnota undefined se používá ke kontrole, zda byla proměnná přiřazena.
Předměty a symboly
Typ objektu je speciální.
Všechny ostatní typy se nazývají „primitivní“, protože jejich hodnoty mohou být pouze jednoduché hodnoty (ať už řetězec, číslo nebo něco jiného). Objekty ukládají kolekce dat nebo složitější struktury.
Předměty zaujímají v jazyce důležité místo a vyžadují zvláštní pozornost. Těm se budeme věnovat v kapitole Objekty, až se dozvíme více o primitivech.
Typ symbolu se používá k vytvoření jedinečných identifikátorů v objektech. Pro úplnost to zde uvádíme, tento typ budeme studovat až po objektech.
Typ operátora
Operátor typeof vrací typ svého argumentu. To je užitečné, když chceme zacházet s hodnotami různých typů odlišně nebo jen chceme provést kontrolu.
Má dvě syntaktické formy:
// Обычный синтаксис typeof 5 // Выведет "number" // Синтаксис, напоминающий вызов функции (встречается реже) typeof(5) // Также выведет "number" Pokud je výraz předán, musí být uzavřen v závorkách, protože typeof má vyšší prioritu než binární operátory:
typeof 50 + " Квартир"; // Выведет "number Квартир" typeof (50 + " Квартир"); // Выведет "string" Jinými slovy, závorky jsou potřebné k určení typu hodnoty, která je výsledkem provedení výrazu v nich.
Volání typeof x vrátí řetězec s názvem typu:
typeof undefined // "undefined" typeof 0 // "number" typeof 10n // "bigint" typeof true // "boolean" typeof "foo" // "string" typeof Symbol("id") // "symbol" typeof Math // "object" (1) typeof null // "object" (2) typeof alert // "function" (3) Poslední tři řádky vyžadují vysvětlení:
- Math je vestavěný objekt, který poskytuje matematické operace a konstanty. Na to se podíváme podrobněji v kapitole Čísla. Zde slouží pouze jako příklad objektu.
- Výsledkem volání typeof null je „object“ . Toto je oficiálně uznaná chyba v typeof , která se datuje od vytvoření JavaScriptu a je zachována kvůli kompatibilitě. Null samozřejmě není objekt. Jedná se o speciální hodnotu se samostatným typem.
- Volání typu upozornění vrátí „funkci“, protože upozornění je funkce. Funkcemi se budeme zabývat v dalších kapitolách, kde také uvidíme, že JavaScript nemá speciální typ „funkce“. Funkce jsou objektového typu. Typeof je ale zpracovává speciálně a vrací „funkci“ . To je také případ od vytvoření JavaScriptu. Formálně je to nesprávné, ale v praxi to může být výhodné.
Celkem
V JavaScriptu existuje 8 základních datových typů.
- Sedm z nich se nazývá „primitivní“ datové typy:
- číslo pro libovolná čísla: celé číslo nebo s plovoucí desetinnou čárkou; Celočíselné hodnoty jsou omezeny na rozsah ±(2 53 -1) .
- bigint pro celá čísla libovolné délky.
- struna pro struny. Řetězec může obsahovat nula nebo více znaků, neexistuje žádný samostatný typ znaku.
- boolean pro true / false .
- null pro neznámé hodnoty je samostatný typ, který má jednu hodnotu null.
- undefined for unassigned values je samostatný typ, který má jedinou hodnotu, undefined .
- symbol pro jedinečné identifikátory.
- objekt pro složitější datové struktury.
Operátor typeof nám umožňuje vidět, jaký typ dat je uložen v proměnné.
- Má dvě formy: typeof x nebo typeof(x) .
- Vrátí řetězec s názvem typu. Například „provázek“.
- Pro hodnotu null se vrací „object“ – jedná se o jazykovou chybu, ve skutečnosti to není objekt.
V následujících kapitolách se zaměříme na primitivní hodnoty, a jakmile se s nimi seznámíme, přejdeme k objektům.
Všechny programovací jazyky mají vestavěné datové typy, ale často se liší jazyk od jazyka. Tento článek je pokusem popsat vestavěné datové struktury (typy) dostupné v JavaScriptu a jejich vlastnosti. Na jejich základě jsou postaveny další datové struktury. Kdykoli to bude možné, porovnáme datové typy v různých jazycích.
Dynamické psaní
JavaScript je slabě napsaný nebo dynamický jazyk. To znamená, že typ proměnné nemusíte definovat předem. Typ bude určen automaticky během provádění programu. To také znamená, že můžete použít jednu proměnnou k ukládání různých typů dat:
var foo = 42; // сейчас foo типа Number foo = "bar"; // а теперь foo типа String foo = true; // foo становится типа BooleanTipy dannyx
Standard ECMAScript definuje 8 typů:
- 6 datových typů, které jsou primitivní:
- Nedefinováno (Nedefinovaný typ) : typeof instance === „undefined“
- Boolean (Boolean, logický typ) : typeof instance === „boolean“
- Číslo (číslo) : typeof instance === „číslo“
- String (String) : typeof instance === „string“
- BigInt : typeof instance === „bigint“
- Symbol (v ECMAScript 6): typeof instance === „symbol“
A zde musíme upozornit na používání operátoru typeof k určení typu struktur, protože všechny struktury při použití vrátí „objekt“, protože účelem typeof je zkontrolovat typ dat, nikoli struktury. Pokud je stále nutné zkontrolovat typ struktury, pak je v tomto případě vhodné použít operátor instanceof, protože právě tento operátor odpovídá na otázku, který konstruktor byl použit k vytvoření struktury.
Za zmínku stojí dva speciální případy operátoru typeof: vrácení „objektu“ pro nulovou hodnotu a „funkce“ pro funkce: první je považován za jazykovou chybu, zachovanou z důvodu zpětné kompatibility, druhý je konvence vhodná pro kontrolu, zda hodnota patří do kategorie funkcí, kde je funkce speciálním, „volatelným“ objektem.
Primitivní hodnoty
Všechny datové typy v JavaScriptu kromě objektů jsou neměnné (hodnoty nelze upravit, pouze přepsat novou úplnou hodnotou). Například na rozdíl od jazyka C, kde lze řetězec upravovat znak po znaku, jsou v JavaScriptu řetězce znovu vytvořeny pouze jako celek. Hodnoty těchto typů se nazývají „primitivní hodnoty“.
Booleovský datový typ
Booleovský typ představuje logickou entitu a má dvě hodnoty: true a false . Podrobnosti najdete v části Boolean a Boolean.
Null
Tento datový typ má pouze jednu hodnotu: null . Podrobnosti viz null a Null.
Nedefinováno
Proměnná, které nebyla přiřazena hodnota, bude mít hodnotu nedefinovanou. Podrobnosti viz undefined a undefined.
Čísla
Podle standardu ECMAScript existuje pouze jeden číselný typ, což je 64bitové číslo s dvojitou přesností podle standardu IEEE 754. Jinými slovy, V JavaScriptu neexistuje žádný speciální typ pro celá čísla. To znamená, že při provádění numerických operací můžete získat nepřesnou (zaokrouhlenou) hodnotu. Kromě schopnosti reprezentovat čísla s pohyblivou řádovou čárkou existuje několik symbolických hodnot: +Infinity (kladné nekonečno), -Infinity (záporné nekonečno) a NaN (ne číslo).
Chcete-li získat největší nebo nejmenší dostupnou hodnotu v rozsahu +/-Infinity , můžete použít konstanty Number.MAX_VALUE nebo Number.MIN_VALUE. A počínaje ECMAScriptem 2015 můžete také zkontrolovat, zda je číslo v bezpečném rozsahu celých čísel, pomocí metody Number.isSafeInteger() nebo pomocí konstant Number.MAX_SAFE_INTEGER a Number.MIN_SAFE_INTEGER. Mimo tento rozsah nebudou operace s celými čísly bezpečné a vrátí přibližné hodnoty.
Nula v JavaScriptu má dvě reprezentace: -0 a +0. („0“ je synonymem pro +0). V praxi to má jen málo znatelný efekt. Například výraz +0 === -0 je pravdivý. K tomu však může dojít při dělení nulou:
> 42 / +0 Infinity > 42 / -0 -InfinityAčkoli číslo ve většině případů představuje pouze jeho hodnotu, JavaScript poskytuje několik binárních operací. Lze je použít k reprezentaci čísla jako více booleovských hodnot pomocí bitové masky. To je považováno za špatný postup, protože JavaScript nabízí jiné způsoby, jak reprezentovat booleovské hodnoty (jako je pole prvků s booleovskými hodnotami nebo objekt obsahující sadu booleovských vlastností). Navíc bitové masky často znesnadňují čtení, pochopení a údržbu kódu. Tato technika může být nezbytná v situacích, kde existují technická omezení, jako je kapacita místního úložiště dat, nebo v extrémních situacích, kdy se počítá každý bit přenesený přes síť. Tento přístup by měl být použit jako poslední možnost, když neexistují žádné jiné možnosti pro požadovanou optimalizaci.
Textové řádky
V JavaScriptu se k reprezentaci textových dat používá typ String. Je to řetězec „prvků“ 16bitových celočíselných hodnot bez znaménka. Každý takový prvek zaujímá svou vlastní pozici v řadě. První prvek má index 0, další má index 1 a tak dále. Délka řetězce je počet prvků v něm.
Na rozdíl od jazyků jako C jsou řetězce v JavaScriptu neměnné. To znamená, že jakmile je hodnota řetězce vytvořena, nelze ji upravit. Zbývá pouze vytvořit nový řetězec provedením nějaké operace s původním řetězcem. Například:
- Získejte část původního řetězce výběrem jednotlivých znaků nebo pomocí metody String.substr().
- Spojte dva řetězce do jednoho pomocí operátoru + nebo metody String.concat().
Nepoužívejte řetězce všude v kódu!
Někdy může být lákavé používat řetězce k reprezentaci složitých datových struktur. To poskytne malé krátkodobé výhody:
- Je snadné sloučit data do haldy zřetězením řetězců.
- Snadné ladění (data se zobrazují „tak jak jsou“, v čitelné textové podobě).
- Řetězce jsou běžný datový formát používaný řadou API (vstupní pole, hodnoty místního úložiště, XMLHttpRequest vrací odpověď jako řetězec atd.) a může být lákavé používat pouze řetězce.
Ačkoli je možné vyjádřit data jakékoli složitosti v řetězci, není to nejlepší nápad. Například pomocí oddělovače lze jako seznam prvků použít řetězec (vhodnějším řešením by bylo pole JavaScriptu). Bohužel, pokud se takový oddělovač vyskytne v hodnotě jednoho z prvků, bude takový seznam porušen. Řešením by mohlo být přidání znaku escape atd. To vše by vyžadovalo přidání mnoha zbytečných pravidel a bylo by obtížné udržovat.
Používejte řetězce pouze pro textová data. U složených struktur převeďte řetězce na vhodné konstrukty.
Symbol datového typu
Symboly jsou novou funkcí JavaScriptu od ECMAScript 2015. Symbol je unikátní и neměnný primitivní hodnota, kterou lze použít jako klíč pro vlastnost objektu (viz níže). V některých programovacích jazycích se symbolům říká atomy. Lze je také porovnat s pojmenovanými hodnotami výčtu v jazyce C, kde najdete další podrobnosti.
Typ dat Velké celé číslo (BigInt)
BigInt je vestavěný objekt, který poskytuje způsob, jak reprezentovat celá čísla větší než 2 53, což je největší číslo, které může JavaScript spolehlivě reprezentovat pomocí primitiva Number.
> let bigInt = 19241924124n; > console.log(bigInt); 19241924124n > console.log(typeof bigInt); "bigint"Objekty
V počítačové terminologii je objekt hodnotou v paměti, na kterou lze odkazovat pomocí identifikátoru.
Vlastnosti
V JavaScriptu lze objekt chápat jako sadu vlastností. Doslovná inicializace objektu specifikuje určitý počet počátečních vlastností a pole lze přidávat a odebírat za běhu aplikace. Hodnoty vlastností mohou být libovolného typu, včetně jiných objektů, což vám umožňuje vytvářet složité, rozvětvené hierarchie dat. Každá vlastnost objektu je identifikována klíčem, kterým může být hodnota typu String nebo Symbol.
Existují dva typy vlastností: vlastnost value a vlastnost accessor (vlastnost zabalená do getteru a setteru). Liší se v určitých atributech.
Hodnotová vlastnost
Přidružuje klíč k hodnotě a má následující atributy:
Atribut Typ popis Výchozí hodnota [[Hodnota]] Jakýkoli typ JavaScriptu Hodnota vrácená při přístupu k vlastnosti. nedefinované [[Writable]] Boolean Pokud je false , [[Value]] vlastnosti nelze změnit. nepravdivý [[Vyčíslitelné]] Boolean Pokud je true , vlastnost bude vyčíslena ve smyčce for. v. Další podrobnosti najdete v části Vyčíslitelnost a vlastnictví vlastností. nepravdivý [[Konfigurovatelné]] Boolean Pokud je false , vlastnost nemůže být odstraněna a její atributy kromě [[Value]] a [[Writable]] nelze změnit. nepravdivý Atribut Typ popis Jen pro čtení Boolean Rezervováno atributem ES5 [[Writable]]. DontEnum Boolean Rezervováno atributem ES5 [[Enumerable]]. DontDelete Boolean Rezervováno atributem ES5 [[Configurable]]. Vlastnost příslušenství
Přidružuje klíč k jedné ze dvou funkcí přístupového objektu (getter a setter), aby získal nebo změnil hodnotu vlastnosti, a má následující atributy:
Atribut Typ popis Výchozí hodnota [[Získat]] Funkce nebo nedefinováno Funkce je volána bez parametrů a vrací hodnotu vlastnosti při každém čtení vlastnosti. Viz také získat . nedefinované [[Soubor]] Funkce nebo nedefinováno Funkce je volána s jedním argumentem obsahujícím hodnotu, která má být přiřazena pokaždé, když je proveden pokus o přiřazení nové hodnoty vlastnosti. Viz také sada. nedefinované [[Vyčíslitelné]] Boolean Pokud je true , vlastnost bude vyčíslena ve smyčce for. v. nepravdivý [[Konfigurovatelné]] Boolean Pokud je false , vlastnost nelze odstranit a nelze ji převést na vlastnost value. nepravdivý Poznámka: Atributy jsou obvykle používány jádrem JavaScriptu, takže k nim nemáte přímý přístup (podrobnosti viz Object.defineProperty()). Proto jsou ve výše uvedených tabulkách umístěny ve dvojitých hranatých závorkách namísto jednoduchých.
„Normální“ objekty a funkce
Objekt JavaScriptu je tabulka vztahů mezi klíči a hodnotami. Klíče jsou řetězce (nebo Symbol) a hodnotami může být cokoliv. Díky tomu jsou objekty plně v souladu s definicí hash tabulky.
Funkce jsou běžné objekty, které mají další schopnost být volány k provedení.
Data
Chcete-li pracovat s daty, použijte vestavěný globální objekt Date.
Pole jsou generická a typizovaná
Pole je běžný objekt s dalším vztahem mezi celočíselnými klíči jeho vlastností a speciální vlastností length. Kromě toho pole dědí Array.prototype , který poskytuje komplexní sadu metod pro manipulaci s poli. Například metoda indexOf (používá se k hledání hodnoty v poli), push (přidává prvek na konec pole) atd. To vše dělá pole ideálním kandidátem pro reprezentaci seznamů a výčtů.
Typovaná pole jsou reprezentace binárních datových souborů podobné poli a nabízejí mnoho metod, jejichž sémantika je podobná jejich protějškům v poli. „Typované pole“ je obecný termín pro řadu datových struktur, včetně Int8Array , Float32Array atd. Více se o nich můžete dozvědět v průvodci Typed Arrays. Typovaná pole se často používají společně s ArrayBuffer a DataView .
Sbírky: Maps, Sets, WeakMaps, WeakSets
Tyto datové sady používají jako klíč odkaz na objekt a byly zavedeny do JavaScriptu s ECMAScript Edition 6. Set a WeakSet představují sadu jedinečných objektů, zatímco Map a WeakMap přidružují hodnotu k objektu (který slouží jako klíč). Rozdíl mezi mapou a slabou mapou je v tom, že pouze mapa má vyčíslitelné klíče. To umožňuje optimalizovaný sběr odpadu pro WeakMap.
Bylo by možné napsat vlastní implementaci Map and Set v čistém ECMAScriptu 5. Protože však objekty nelze porovnávat o více nebo méně než, výkon vyhledávání podomácku vyrobené implementace by byl nucen být lineární. Nativní implementace (včetně WeakMap) má výkon logaritmicky blízký konstantní.
Chcete-li svázat některá data s uzlem DOM, musíte obvykle nastavit vlastnosti tohoto uzlu přímo nebo použít jeho atributy data-*. Nevýhodou tohoto přístupu je, že tato data budou dostupná všem skriptům spuštěným ve stejném kontextu. Mapy a WeakMaps poskytují možnost soukromě svázat data s objektem.
Strukturovaná data: JSON
JSON (JavaScript Object Notation) je odlehčený formát pro výměnu dat, který pochází z JavaScriptu, ale používá se v mnoha programovacích jazycích. JSON vytváří univerzální datové struktury. Podrobnosti viz JSON a JSON.
Více objektů a standardní knihovna
JavaScript má standardní knihovnu vestavěných objektů. V referenční příručce naleznete popis všech objektů dostupných pro práci.
Definování typů pomocí operátoru typeof
Operátor typeof vám může pomoci určit typ vaší proměnné. Podrobnosti a případy použití najdete na stránce dokumentace.
viz též
- Nicholas Zakas, sbírka některých klasických datových struktur a algoritmů napsaných v JavaScriptu.
- Implementace některých datových struktur pro JavaScript