Dátové typy v javascripte. Typy údajov JavaScript

Rozhodol som sa napísať sériu článkov s názvom „Komplikované veci o jednoduchých veciach“. Táto séria bude venovaná jazyku JavaScript. Prečo je to „komplikované na jednoduchých veciach“? Pretože všetko, čo vám poviem, vám poviem s prihliadnutím na vlastnosti tlmočníka, počnúc typmi údajov. To všetko sa urobí preto, aby sme neskôr mohli jednoducho hovoriť o zložitých veciach, napríklad o metódach dedenia v JavaScripte a iných vzoroch.

JavaScript je objektovo orientovaný programovací jazyk s prototypovou organizáciou.
O tom, čo znamená “s prototypom organizácie” si povieme v ďalšom článku (určite bude), no dnes zistíme, prečo je “objektovo orientovaný” a či je v JS všetko objekt.
Na dosiahnutie svojich cieľov potrebuje JS iba 9 typov. Okrem toho je pre program k dispozícii iba 6 z nich, zvyšné 3 sú dostupné iba na úrovni implementácie a používa ich špecifikácia. Na prvý pohľad (a to je prvá mylná predstava) je všetko v JS objekt. Takže päť zo šiestich typov dostupných pre program sú takzvané primitívy a nie sú objektmi (nižšie vysvetlím, prečo a ako sa zamieňajú s objektmi). Týchto päť primitív je:

- reťazec (s='str')
- Číslo (n=10)
- boolovská hodnota (b=pravda)
A to, čo im hovorím „filozofické typy“:
- null (v = null)
- nedefinované (u=nedefinované)

Filozofické v tom zmysle, že null znamená, že premennej nie je priradené nič, a nedefinované znamená, že premennej je priradená prázdnota. Aký je rozdiel medzi „ničom“ a „prázdnotou“. v tomto prípade- premýšľajte o tom vo svojom voľnom čase. Teraz to neurobíme.

šiesty, dostupné pre program typ (objekt) je:
- Objekt (nepliesť si s konštruktorom Object, teraz hovoríme len o abstraktných typoch!) je jediný typ, ktorý reprezentuje objekty v JavaScripte.
Objekt je dátová štruktúra (ich celá množina), reprezentovaná ako množina párov kľúč – hodnota. Hodnota môže byť ľubovoľný z dátových typov – potom to bude vlastnosť objektu, alebo aj funkcia – potom to bude metóda objektu.

Existuje mnoho spôsobov, ako pracovať s primitívmi. Počnúc tým, že sa dajú priradiť k premenným cez literály alebo cez konštruktory a končiac tým, že primitívy nemožno do premenných vôbec deklarovať, pracovať s nimi priamo. Primitíva môžu byť aj v globálnych a lokálnych premenných.

Tu je niekoľko príkladov:

Var v1; //nedefinovaná (prázdna) lokálna premenná var v2="2"; //retazec lokalna doslovna premenna var v3 = new String(2); //lokálna reťazcová premenná deklarovaná cez konštruktor. Vytvorí sa nový objekt zadajte String v4 = String(2); //reťazcová globálna premenná volaná cez konštruktor. Vytvorí premennú window.v4 "2".length; // reťazec sa nestane premennou, ale už môže byť použitý ako Object 34..toString(); //číslo sa nestane premennou, ale už ho možno použiť ako objekt 12. toString(); //číslo sa nestane premennou, ale už môže byť použité ako objekt (22).toString();//číslo sa nestane premennou, ale už môže byť použité ako objekt

V posledných 4 príkazoch je jasne vidieť, ako sa primitív zamieňa s objektom – veď metódu voláme cez bodku – rovnako ako objekt. Naozaj sa zdá, že tieto primitívy sú predmety.

Mylná predstava sa ešte zhorší, keď skontrolujeme typ premennej, napr.

Var v = null; typ v;

A ako odpoveď dostaneme „objekt“.

A ak napíšeme:
var v = null; v instanceof Object;

Potom bude vo vašej hlave neporiadok, pretože výsledok posledného riadku bude „falošný“. To znamená, že premenná v je typu object, ale nie je zdedená z typu Object. Čo do pekla?!

Najprv mi dovoľte vysvetliť úlovok s typeof null. Tento operátor vráti typ objektu. Faktom však je, že operátor typeof vracia reťazcovú hodnotu prevzatú z pevne pevnej tabuľky, kde je napísané: „for null – návrat „objekt“. Operátor instanceof kontroluje, či niečo patrí k zadanému typu údajov. Ako to robí, vám poviem v ďalšom článku, ale ubezpečujem vás, že v tomto prípade to fungovalo správne, null primitívum nie je v žiadnom prípade zdedené z typu Object - je to primitív sám o sebe, nižší stupeň rozvoj.

Dobre, vytriedili sme typ a inštanciu, ale metódy sa volajú na primitívoch – rovnako ako na objektoch! Čo ak to nie je predmet?

Tu je vec. Existuje niečo ako wrapper funkcie (konštruktory) (a opäť bude všetko jasnejšie v druhom článku). Existujú pre všetky primitívy (Number(), Boolean(), String()), ako aj iné. Ich podstatou je vytvorenie objektu z primitíva, ktorý bude mať pomocné metódy na prácu s týmto typom primitíva.
Premennú je možné vytvoriť napríklad takto:

Var num = new Number(23.456);

V tomto prípade dostaneme objekt z primitívnej 23.456.
Pre typ čísla má konštruktor Number() pomocnú metódu toPrecision() - tá určuje počet platných číslic čísla. Ak napríklad pre číslo 23,456 nastavíme počet platných číslic na 4, dostaneme číslo 23,45.
A to je, keď sa pokúšame získať prístup k primitívu ako objektu:

(23,456). toPrecision(4);

Interpret dočasne zabalí primitívum do objektu volaním new Number(23.456) a potom na tento objekt zavolá metódu toPrecision(), ktorú teraz má. Mnoho ľudí sa teda mylne domnieva, že všetko v JS je objekt.

Existuje aj ďalší príklad, ktorý je zavádzajúci a spôsobuje nepochopenie toho, čo sa deje. Tu je kód:

Var str = 'str'; str.test = 'test'; //nenastane chyba, program bude pokračovať v práci, ale console.log(str.test); //nedefinované

Ak by sme ako predtým verili, že str je objekt, boli by sme prekvapení, prečo si nepamätá novú testovaciu vlastnosť. Teraz však vieme, že keď sa k primitívu pristupuje ako k objektu, dočasne sa zmení na objekt typu String. Ale po dokončení operácie tento obal zmizne a spolu s ním aj nová testovacia vlastnosť. To je všetko, žiadna mágia.

V skutočnosti, keď sa pozrieme dopredu, pri zabalení primitíva do objektu sa vytvorí celý reťazec dedičnosti (o tom, ako je to organizované, si povieme neskôr), ale v podstate toto dostaneme ako „matriošku“:

Objekt(číslo()). Rodič akéhokoľvek objektu v JS, tak či onak, bude Object. Pri volaní vlastnosti v objekte vyhľadávanie prechádza cez celú túto „matriošku“, kým nenájde túto vlastnosť v jednom z objektov, alebo vráti nedefinované, alebo ak hľadalo metódu, vyvolá výnimku. Primitív má teda k dispozícii aj vlastnosti objektu. O tom, ako funguje prototypové dedičstvo a jeho zložitosti, si povieme v druhom článku.

Aby som pridal trochu intríg k druhému článku, ktorý chcem vydať, poviem vám o ďalšom bode týkajúcom sa funkcií konštruktora – konverzii typu. JS nie je prísny písaný jazyk. To znamená, že v čase deklarovania premennej nie sme povinní uvádzať, o aký typ ide, a navyše počas behu programu je možné do tejto premennej umiestniť dáta absolútne akéhokoľvek typu. Môžeme použiť napríklad aj reťazcové premenné v matematických operáciách alebo naopak čísla v operácii zreťazenia. Príklad:

Var str = "abc"; str+1; // "abc1"

Tu sa primitívum typu číslo - 1 skonvertuje na reťazcové primitívum. V objektoch je táto funkcia dostupná volaním metódy toString(), v objektoch typu číslo existuje metóda valueOf(), ktorá vráti primitívum typu číslo. Ale trochu sme si povedali, že iba objekty môžu mať metódy. Takže v procese konverzie primitíva z jedného typu na druhý je tiež zabalený do objektu? Uisťujem vás, že nie. Táto metóda sa volá implicitne, keď funkciu konštruktora zavolá interpret bez operátora new. Čo je to za magický operátor nový a čo sa stane, keď sa funkcia konštruktora zavolá bez neho a čo je to sakra za funkciu konštruktora, si povieme v ďalšom článku. Zatiaľ ma berte za slovo – konverzia typu nastane okamžite – z primitívneho na primitívne.

Zatiaľ je samozrejme viac otázok ako odpovedí, verte však, že po prečítaní druhého článku bude všetko oveľa jasnejšie. Tu ma hlavne zaujalo a vyvolalo množstvo otázok – takpovediac pobúrených myslí. Z tohto článku si však možno niečo odniesť:
1. Napriek všeobecnému presvedčeniu „v JS je všetko objekt“ – nie je to pravda, sme zistili, že zo 6 dátových typov, ktoré má programátor k dispozícii, je až 5 primitívov a iba jeden predstavuje objektový typ.
2. O objektoch sme sa dozvedeli, že ide o dátovú štruktúru, ktorá obsahuje páry kľúč – hodnota. Keď hodnota môže byť ľubovoľný z dátových typov (a to bude vlastnosť objektu) alebo funkcia (a toto bude metóda objektu).
3. Ale primitíva nie sú predmety. Dá sa s nimi síce pracovať ako s objektom (a to spôsobuje mylnú predstavu, že primitív je objekt), ale...
4. Premenné môžu byť deklarované buď jednoducho (doslova) (var a = ‘str’) alebo prostredníctvom funkcie konštruktora (wrapper) (var a = new String(‘str’)). V druhom prípade už nedostaneme primitívum, ale objekt vytvorený obalovou funkciou String(). (Zistíme, aký druh magického operátora je nový a aká je funkcia konštruktora ďalej).
5. Naučili sme sa, že vytvorením obalu nad primitívom (new String(‘str’)), s ním môžete pracovať ako s objektom. Práve tento obal vytvára tlmočník okolo primitíva, keď sa s ním pokúšame pracovať ako s objektom, no po vykonaní operácie sa zničí (takže si primitív nikdy nebude môcť zapamätať vlastnosť, ktorú mu priradíme a.test = 'test' - vlastnosť test zmizne s obalom ).
6. Dozvedeli sme sa, že objekty majú metódu toString(), ktorá vracia reťazcovú reprezentáciu objektu (pre typ čísla hodnota valueOf() vráti číselnú hodnotu).
7. Pochopil, že pri vykonávaní operácií zreťazenia alebo matematických operácií môžu primitívy predefinovať svoj typ na požadovaný. Na tento účel používajú funkcie wrapper svojich typov, ale bez nového operátora (str = String(str)). (Budeme hovoriť ďalej o tom, aký je rozdiel a ako to funguje)
8. A nakoniec sme sa dozvedeli, že typeof preberá hodnoty z pevne stanovenej tabuľky (odtiaľ pochádza ďalšia mylná predstava založená na typeof null //objekt).

Premenná je pomenované pamäťové miesto, do ktorého môžete ukladať nejaké informácie a zároveň ich z neho získavať.

Deklarácia (tvorba) premenných sa vykonáva pomocou kľúčové slovo var.

// správa - názov premennej var message;

Keď vytvoríte premennú, môžete jej okamžite priradiť hodnotu.

Priradenie hodnoty premennej sa vykonáva pomocou operátora „=“.

// napríklad vytvorte premennú e-mailovú adresu a priraďte jej reťazec " [chránený e-mailom]"var email = " [chránený e-mailom]"; // nastavenie premennej emailu na novú hodnotu email = " [chránený e-mailom]";

Ak chcete získať hodnotu premennej, jednoducho na ňu odkazujte podľa názvu.

// napríklad vypíšte hodnotu premennej email do konzoly prehliadača: console.log(email);

Ak chcete deklarovať viac ako jednu premennú pomocou jedného kľúčového slova var, musíte použiť čiarku.

Var cena = 78,55, množstvo = 10, správa;

JavaScript je dynamicky alebo slabo napísaný jazyk. To znamená, že keď je premenná deklarovaná, nemusí špecifikovať typ údajov, ktorý môže akceptovať. Preto môžete do premennej najskôr umiestniť hodnotu jedného typu údajov a potom inú.

Var výstup = "úspech"; // premenná má dátový typ string output = 28; // rovnaká premenná, ale už dátového typu „číslo“ output = true; // rovnaká premenná, ale už ukladá boolovskú hodnotu

Hodnotu premennej je možné meniť neobmedzený počet krát.

// je vytvorená premenná veku var age; // premennému veku je priradená hodnota 67 vek = 67; // premenný vek je nastavený na "Vek odchodu do dôchodku" vek = "Vek odchodu do dôchodku"; // variabilný vek je nastavený na 55 vek = 55;

Osvedčenou praxou pri vývoji klientskych aplikácií je použitie len jedného dátového typu v danej premennej, t.j. nezapisujte hodnoty do premennej, ktorá má Rôzne druhyúdajov. Aby ste pochopili, aký typ údajov by sa mal v premennej očakávať, odporúča sa pri vytváraní premennej okamžite inicializovať konkrétnu hodnotu.

Názov premennej sa môže skladať z písmen, číslic a symbolov $ a _. V tomto prípade prvý znak premennej nesmie byť číslo. Okrem toho nemôžete použiť vyhradené slová ako názvy premenných.

// vytvorenie dvoch premenných, prvá premenná sa volá phone, druhá je správa; var telefón, správa;

Na veľkosti písmen v názve premennej záleží. To znamená, že napríklad premenná telefón a telefón sú dve rôzne premenné.

Ak sa nepoužíva striktný režim, môžete vytvoriť premennú s počiatočnou hodnotou bez kľúčového slova var.

Cena = 250,00; // vytvoril premennú a inicializoval ju číslom 250.00 percent = "20%"; // vytvoril premennú a inicializoval ju reťazcom „20%“

Vytváranie premenných týmto spôsobom sa však neodporúča.

Typy údajov

V JavaScripte možno dátové typy rozdeliť na primitívne a objektové.

Premenné obsahujúce primitívne dátové typy ukladajú svoju hodnotu explicitne.

V JavaScripte existuje 5 primitívnych dátových typov:

  • číslo;
  • reťazec;
  • booleovský typ (boolean);
  • nulový;
  • nedefinované.

Ak je jednej premennej priradená hodnota inej, ktorá obsahuje primitívny dátový typ, dostane vlastnú kópiu tejto hodnoty.

Var x = 77, y = x; x = 55; y; // 77

Premenné obsahujúce objekt v skutočnosti neukladajú samotný objekt, ale odkaz naň.

Ak je jednej premennej priradená hodnota inej, ktorá obsahuje objekt (odkaz naň), potom dostane aj prepojenie naň. V dôsledku tejto operácie budú tieto dve premenné obsahovať odkaz na rovnaký objekt.

// príklad 1 (s typom údajov "objekt") var coord1 = (x: 77, y: 100), coord2 = coord1; coord1.x = 55; // nastavíme vlastnosť x objektu na novú hodnotu coord2.x; // 55, pretože coord1 a coord2 obsahujú odkaz na rovnaký objekt // príklad 2 (s typom údajov poľa) var coord1 = , coord2 = coord1; coord1 = 55; // nastavíme prvok s indexom 0 na novú hodnotu coord2; // 55, pretože coord1 a coord2 obsahujú odkaz na rovnaký objekt // príklad 3 (s typom údajov "dátum") var date1 = new Date(2018,00,01), date2 = date1; date2 = date2.setDate(date2.getDate()+7); // zvýšenie dátumu o 7 dní dátum1; // 01.07.2018, pretože dátum1 a dátum2 obsahujú odkaz na rovnaký objekt

číslo

Číselný typ údajov v JavaScripte je všeobecný. Používa sa na reprezentáciu celých čísel aj zlomkov.

Var int = 5; // integer var float = 5,98; // zlomkové číslo

Formát na reprezentáciu čísel v JavaScripte je v súlade s normou IEEE 754-2008.

Celé čísla v JavaScripte je možné špecifikovať nielen v desiatková sústava notový zápis, ale aj v osmičkovom (0) príp hexadecimálna sústava radix (0x) pomocou predpôn uvedených v zátvorkách:

Var int = 010; // 8 int = 055; // 45 int = 0xFF; //255 int = 0xB8; // 184

Je možné písať čísla v exponenciálnom tvare:

Var num = 2e3; // exponencialny zapis cisla 2*10^3 (2000) num = 2e-3; // exponencialny zapis cisla 2*10^-3 (0,002) num = 3,2e3; // 3200 num = 1,5e-2; // 0,015

Číselný dátový typ obsahuje okrem čísel aj špeciálne číselné hodnoty:

  • Infinity (pozitívne nekonečno);
  • -Nekonečno (záporné nekonečno);
  • NaN (nie je číslo).

Špeciálna hodnota Infinity znamená veľmi veľké kladné číslo, t.j. číslo, ktoré nie je možné zobraziť v JavaScripte, pretože je príliš veľké.

Špeciálne významy -Nekonečno znamená naopak veľmi veľké záporné číslo, t.j. číslo, ktoré nemôže byť reprezentované JavaScriptom, pretože je tiež príliš veľké.

Príklad výrazov, ktoré vrátia špeciálne číselné hodnoty ako výsledok ich výpočtu:

5/0; // Nekonečno -5/0; // -Infinity Math.pow(10,399); // Nekonečno (10 na mocninu 399) Math.pow(10,399); // -Nekonečno (-10 na mocninu 399)

Hodnota NaN sa vráti ako výsledok vykonania matematických operácií, ktoré JavaScript nedokáže vypočítať.

5 - "Ahoj"; // NaN (odčítajte riadok od čísla 5) 1000 / "20px"; // NaN (číslo delené reťazcom) true * "1rem"; // NaN (logická hodnota true vynásobená reťazcom)

Čo je veľmi zaujímavé, je, že hodnota NaN v JavaScripte sa nerovná ničomu vrátane seba samého.

NaN == NaN; // falošné NaN === NaN; //false

Booleovský typúdaje (logická hodnota)

Boolean je primitívny dátový typ, ktorý má iba dve hodnoty: true a false.

Var a = pravda; var b = nepravda;

Reťazec

String je dátový typ, ktorý sa používa v JavaScripte na reprezentáciu textu.

Reťazec JavaScript môže pozostávať z 0 alebo viac postavy.

JavaScript vždy používa Unicode ako formát reťazca.

Vytvorenie reťazca (reťazcový literál) sa vykonáva uzavretím textu do jednoduchých alebo dvojitých úvodzoviek.

"JavaScript"; "ECMAScript";

V JavaScripte nie je rozdiel medzi jednoduchými a dvojitými úvodzovkami.

Ale v niektorých prípadoch má zmysel používať jednoduché úvodzovky namiesto dvojitých úvodzoviek a naopak.

Napríklad, keď reťazec obsahuje dvojité úvodzovky, je vhodnejšie ho uzavrieť do jednoduchých úvodzoviek. Odstráni sa tým nutnosť dávať v ňom dvojité úvodzovky.

""ECMAScript""; // bez escapovania (pomocou jednoduchých úvodzoviek) "\"ECMAScript\""; // s únikom

Reťazec v JavaScripte môže obsahovať Špeciálne symboly. Napríklad \n (riadkový posuv), \t (tabulátor), \r (návrat vozíka) atď.

"Toto je veta.\nA toto je tiež veta, ale bude začínať od nového riadku.";

Pomocou reťazcov môžete vykonávať operáciu sčítania (zjednotenia) alebo, inými slovami, zreťazenia. Používa sa na to operátor „+“. Zmyslom tejto operácie je pripojiť druhý riadok na koniec prvého.

"Milujem" + "JavaScript"; // Milujem JavaScript

Hodnota je "nedefinovaná"

undefined je špeciálny primitívny dátový typ, ktorý má jednu hodnotu rovnajúcu sa undefined .

Tento typ údajov má deklarovanú premennú, ktorej ešte nebola priradená hodnota.

Var num; //nedefinované

Hodnota undefined sa vráti aj pri prístupe k neexistujúcej vlastnosti objektu.

Var obj = (); // prázdny objekt obj.prop; //nedefinované

"nulová" hodnota

null je špeciálny primitívny dátový typ, ktorý má jednu hodnotu rovnajúcu sa null .

null je len špeciálna hodnota, ktorá má význam „nič“ alebo „neznáma hodnota“, t.j. jasne to nic neznamena.

Objekt

Objekt je dátová štruktúra pozostávajúca z párov názov-hodnota.

Vytvorenie objektu pomocou objektového doslovného zápisu sa vykonáva takto:

( názov_1: hodnota_1, názov_2: hodnota_2, názov_3: hodnota_3, ... )

Ako vidíte, názov je oddelený od hodnoty dvojbodkou a páry sú od seba oddelené čiarkou.

Navyše, ak je hodnota páru funkcia, potom sa nazýva metóda tohto objektu. Všetky ostatné páry, t.j. páry, v ktorých sa funkcia nepoužíva ako hodnota, sa nazývajú vlastnosti objektu.

Inými slovami, objekt je dátová štruktúra pozostávajúca z vlastností a metód.

Var osoba = ( meno: "Vitaly", vek: 27, getAge: function () ( return "Vek: " + tento.vek; ) )

Prístup k vlastnostiam objektu sa vykonáva pomocou bodky alebo pomocou zápisu zátvoriek.

// zobrazenie hodnoty vlastnosti age v konzole prehliadača // 1. metóda (cez bodku) console.log(person.age); // Metóda 2 (pomocou zátvoriek) console.log(person["vek"]); // volanie metódy getAge; hodnota, ktorú vráti, bude odoslaná do konzoly console.log(person.getAge());

typ operátora

Operátor typeof sa používa na získanie informácií o dátovom type výrazu ako reťazec.

Syntax operátora typeof (možnosť bez zátvoriek):

Typ výrazu

Typ syntaxe operátora (pomocou zátvoriek):

Typ (výraz)

Meno premennej, vek = 37, e-mail = " [chránený e-mailom]", isLicense = true, interest: null, lastExperience: ( obdobie: "jún 2011 - jún 2018", miesto: "ISACA, Moskva", pozícia: "Web designer" ), getExperience: function() ( return lastExperience.period + " ("+ posledná skúsenosť.pozícia + " - " + posledná skúsenosť.miesto + ")"; ); typ mena; // "nedefinovaný" typ veku; // "číslo" typ jeLicencia; // "boolovský" typ záujmu; / / "object" (1) typeof lastExperience; // "object" typeof getExperience; // "function" (2) /* (1) je chyba, ktorá je prítomná v jazyku od jeho prvej implementácie; opravené, aby sa zachovala kompatibilita a treba to brať do úvahy pri písaní skriptov; null je primitívny dátový typ, nie je to objekt */ /* (2) - je veľmi výhodné, že operátor typeof oddeľuje funkcie oddelene; ale funkcia v JavaScipt je tiež objekt; to sa dá ľahko overiť vykonaním nasledujúcej konštrukcie: */ typeof getExperience.__proto__.__proto__ // "objekt" (prototyp funkcie je objekt)

Konštanty

S vydaním ECMAScript 6 bolo možné vytvárať konštanty. To sa vykonáva pomocou kľúčového slova const.

Const COLOR_RED = "#ff0000";

Konštanta je premenná, ktorej hodnota je chránená pred zmenou. Tie. Pri pokuse o zmenu hodnoty sa zobrazí chyba.

Const COLOR_RED = "#ff0000"; COLOR_RED = "#f44336"; // Uncaught TypeError: Priradenie ku konštantnej premennej.

Ak napríklad konštanta obsahuje objekt, potom ho nemožno zmeniť, alebo skôr odkaz naň. Ale vlastnosti tohto objektu sa dajú zmeniť.

Const COLORS = ( červená: "#ff0000", zelená: "#00ff00", modrá: "#00ff00" ) COLORS = ["#ff0000","#00ff00","#00ff00"]; // Uncaught TypeError: Priradenie ku konštantnej premennej. COLORS.green = "#4caf50";

Rovnako ako v akomkoľvek inom programovacom jazyku sa dátové typy v JS delia na:

– literály a premenné

– polia, funkcie a objekty

Doslovy:

Literály sú najprimitívnejšie jednotky v akomkoľvek programovacom jazyku, ako sú čísla a symboly. V JavaScripte sú literály rozdelené na číselné a reťazcové:

Číselné literály Reťazové literály

4.5e+2 "Typy údajov v JavaScripte"

Literály v kóde JS môžete použiť na operácie priraďovania a porovnávania:

var pi = "číslo PI";

if(q == "b") q = b + 1;

Premenné:

Čo je to programovací jazyk bez premenných? Vo všeobecnosti možno premenné bezpečne nazvať základom akéhokoľvek programovacieho jazyka. Bez použitia premenných nemožno vykonať takmer žiadnu funkciu, žiadnu slučku alebo príkaz.

JavaScript vám umožňuje priradiť tomuto typu údajov nielen doslovné hodnoty, ale aj celé pole, celú funkciu alebo názov objektu. Premenné môžete nastaviť buď jednoducho kdekoľvek v programe alebo pomocou operátora var:

id = window.close();

var arr = new Array();

ob = dokument.formuláre;

V JavaScripte existujú dva hlavné typy polí:

zabudovaný do tlmočníka (document.forms, document.images,...)

definované užívateľom

Pole sa vytvorí pomocou nového Array();

a = new Array(); b = nové pole(15); c = new Array(15,33,"value 3");

V prvom prípade je premennej a priradené prázdne pole, v druhom prípade je premennej b priradené pole, ktorého prvou hodnotou je číslo 15, a napokon v treťom prípade je premennej c priradené pole 3 hodnôt, z toho tretina je reťazcový doslov.

Existuje niekoľko základných metód na spracovanie polí v JS:

pripojiť sa (); spätne();triediť();

Nižšie je uvedený zoznam hlavných operátorov, o ktorých budeme uvažovať:

var; (...); ak; zatiaľ čo; pre; pre ... v; prestávka; ďalej; vrátiť.

3. Premenné a operátor priradenia v JavaScripte.

Základným priraďovacím operátorom je obyčajná ekvalizácia =, ktorá dáva ľavému operandu hodnotu pravého operandu.

Zvyšné operátory sú skratky nasledujúcich foriem: Skratka Operátor Význam

x + = y x = x + y

x -= y x = x - y

x *= y x = x * y

x /= y x = x / y

x %= y x = x % y

x>y

x >>>= y x = x >>> y

x &= y x = x & y

x ^= y x = x ^ y

x |= y x = x | r

4. Operátory v JavaScripte.

Operátory sa používajú na riadenie toku príkazov v JavaScripte. Jeden objekt môže byť rozdelený do niekoľkých riadkov, alebo naopak, v jednom riadku môže byť niekoľko príkazov.

Musíte vedieť nasledovné, po prvé, bloky príkazov, ako sú definície funkcií, musia byť uzavreté v zložených zátvorkách. Po druhé, bodkočiarka slúži ako oddeľovač jednotlivých výrokov. Ak vynecháte bodkočiarku, správanie programu sa stane nepredvídateľným.

Keďže JavaScript nemá prísne požiadavky na formátovanie textu programu, pre lepšiu čitateľnosť textu môžete vložiť zlomy riadkov a znaky na odsadenie.

Nasledujúce operátory sa používajú v JavaScripte:

break, comment, continue , for , for...in , function , if... else

JavaScript alebo JS(skrátene) nie je jednoduchý jazyk a začínajúci vývojári sa o ňom hneď tak nedozvedia. Najprv sa naučia základy a všetko sa im zdá farebné a krásne. Keď pôjdeme trochu hlbšie, objavia sa polia JavaScriptu, objekty, spätné volania a všetko podobné, čo vám často vŕta v hlave.

V JavaScripte je dôležité správne skontrolovať typ premennej. Povedzme, že chcete vedieť, či je premenná pole alebo objekt? Ako to správne skontrolovať? V tomto konkrétnom prípade existujú triky pri overovaní a o nich bude tento príspevok. Začnime hneď.

Kontrola typu premennej

Napríklad musíte skontrolovať, či premenná je objekt, pole, reťazec alebo číslo. Môžete na to použiť typeof, ale nie vždy to povie pravdu a v príklade nižšie ukážem prečo.

Tento príklad som napísal, aby som jasne ukázal, prečo typeof nie je vždy tou správnou voľbou.

Var _comparison = ( string: "string", int: 99, float: 13.555, object: (ahoj: "ahoj"), pole: new Array(1, 2, 3) ); // Vráti pole s kľúčmi objektu var _objKeys = Object.keys(_comparison); for(var i = 0; i colorArray.length - 1)( i = 0; ) ) Zmeniť pozadie

Vo vnútri prvku.
Prvok je možné vložiť kamkoľvek do dokumentu. Vo vnútri tagu je kód, ktorý sa vykoná ihneď po prečítaní prehliadačom, alebo obsahuje popis funkcie, ktorá sa vykoná v čase jej volania. Popis funkcie je možné umiestniť kdekoľvek, hlavné je, že v čase jej volania je už načítaný kód funkcie.

Kód JavaScript sa zvyčajne umiestňuje do hlavy dokumentu (prvku) alebo za úvodnú značku. Ak sa skript použije po načítaní stránky, napríklad kód počítadla, je lepšie ho umiestniť na koniec dokumentu:

document.write("Zadajte svoje meno");

2. Dátové typy a premenné v JavaScripte

Počítače spracovávajú informácie – dáta. Dáta môžu byť prezentované v rôznych formách alebo typoch. Väčšina funkcií JavaScriptu je implementovaná prostredníctvom jednoduchej sady objektov a dátových typov. Funkcia reťazca, čísla a logiky je založená na typoch údajov typu reťazec, numerický a booleovský. Iné funkčnosť, vrátane regulárnych výrazov, dátumov a matematických operácií, sa vykonáva pomocou objektov RegExp, Date a Math.

Literály v JavaScripte sú špeciálna trieda dátového typu, pevné hodnoty jedného z troch dátových typov – reťazcový, číselný alebo booleovský:

"toto je reťazec" 3.14 true alert("Ahoj"); // "Ahoj" je doslovná var myVariable = 15; // 15 je doslovné

Primitívny dátový typ je inštancia určitý typúdaje ako reťazec, numerický, boolovský, null a nedefinovaný.

2.1. Premenné v JavaScripte

Údaje spracované JavaScript skript, sú premenné. Premenné sú pomenované kontajnery, ktoré ukladajú dáta (hodnoty) v pamäti počítača, ktoré sa môžu meniť počas vykonávania programu. Premenné majú názov, typ a hodnotu.

Názov premennej alebo identifikátor môže obsahovať iba písmená a-z, A-Z, čísla 0-9 (číslo nemôže byť prvým znakom v názve premennej), symbol $ (môže byť iba prvý znak v názve premennej alebo funkcie) a znak podčiarknutia _, medzery nie sú povolené. Dĺžka názvu premennej nie je obmedzená. Je možné, ale neodporúča sa písať názvy premenných písmenami ruskej abecedy, preto musia byť napísané v Unicode.

Ako názov premennej nemôžete použiť kľúčové slová JavaScript. V názvoch premenných v JavaScripte sa rozlišujú malé a veľké písmená, čo znamená, že správa premennej var; a var Správa; - rôzne premenné.

Premenná sa vytvorí (deklaruje) pomocou kľúčového slova var, za ktorým nasleduje názov premennej, napríklad var message; . Pred použitím musíte premennú deklarovať.

Premenná sa inicializuje hodnotou pomocou operátora priradenia = , napríklad var message="Hellow"; , t.j. vytvorí sa premenná správy a v nej sa uloží jej počiatočná hodnota „Ahoj“. Premenná môže byť deklarovaná bez hodnoty, v takom prípade je jej priradená predvolená hodnota undefined . Hodnota premennej sa môže počas vykonávania skriptu meniť. Na rovnakom riadku môžu byť deklarované rôzne premenné oddelené čiarkou:

Var message="Ahoj", number_msg = 6, time_msg = 50;

2.2. Variabilné dátové typy

JavaScript je netypizovaný jazyk, pri deklarácii nie je potrebné špecifikovať typ údajov pre konkrétnu premennú. Typ údajov premennej závisí od hodnôt, ktoré prijíma. Typ premennej sa môže meniť počas operácií s údajmi (dynamické pretypovanie). Konverzie typov sa vykonávajú automaticky v závislosti od kontextu, v ktorom sa používajú. Napríklad vo výrazoch obsahujúcich číselné a reťazcové hodnoty s operátorom + JavaScript konvertuje číselné hodnoty na reťazcové hodnoty:

Var správa = 10 + "dní pred dovolenkou"; // sa vráti "10 dní do dovolenky"

Dátový typ premennej môžete získať pomocou operátora typeof. Tento operátor vráti reťazec, ktorý identifikuje zodpovedajúci typ.

Typ 35; // vráti "číslo" typ "text"; // vráti "string" typeof true; // return "boolean" typeof ; // return "object" typeof undefined; // vráti "nedefinovaný" typ null; // vráti "objekt"

Všetky dátové typy v JavaScripte sú rozdelené do dvoch skupín – jednoduché dátové typy (primitívne dátové typy) a zložené dátové typy (zložené typy údajov).

Jednoduché dátové typy zahŕňajú reťazec, numerický, booleovský, null a underfined.

2.2.1. Typ reťazca

Používa sa na uloženie reťazca znakov uzavretých v dvojitých alebo jednoduchých úvodzovkách. Prázdna množina znakov v jednoduchých alebo dvojitých úvodzovkách je prázdny reťazec. Číslo v úvodzovkách je tiež reťazec.

Var peniaze = ""; // prázdny reťazec, nula znakov var work = "test"; var deň = "nedeľa"; var x = "150";

Do reťazca s dvojitými úvodzovkami môžete vložiť jednu úvodzovku a naopak. Úvodzovky rovnakého typu sú ukončené znakom spätnej lomky \ (nazýva sa to sekvencia escape):

Document.writeln("\"Dobré ráno, Ivan Ivanovič!\"\n"); // zobrazí "Dobré ráno, Ivan Ivanovič!"

Reťazce je možné porovnávať a tiež kombinovať pomocou operátora zreťazenia + . Vďaka automatickému typovému odlievaniu môžete kombinovať čísla a reťazce. Reťazce sú trvalé, akonáhle je reťazec vytvorený, nemôže byť modifikovaný, ale nový reťazec môže byť vytvorený zreťazením iných reťazcov.

2.2.2. Číselný typ (číslo)

Používa sa pre číselné hodnoty. V JavaScripte existujú dva typy čísel: celé čísla (celé číslo) a čísla s pohyblivou rádovou čiarkou (číslo s pohyblivou rádovou čiarkou). Celočíselné hodnoty môžu byť kladné, napríklad 1, 2, záporné, napríklad –1, –2 alebo nula. 1 a 1,0 majú rovnakú hodnotu. Väčšina čísel v JavaScripte je zapísaná v desiatkovej sústave, ale možno použiť aj osmičkové a hexadecimálne systémy.

V desiatkovej sústave sú hodnoty číselných premenných špecifikované pomocou arabských číslic 1, 2, 3, 4, 5, 6, 7, 8, 9, 0.

V osmičkovom formáte je číslo postupnosť obsahujúca číslice 0 až 7, začínajúca predponou 0.

Pre hexadecimálny formát sa pridá predpona 0x (0X), po ktorej nasleduje sekvencia čísel od 0 do 9 alebo písmen od a (A) do f (F), zodpovedajúce hodnotám od 10 do 15.

Var a = 120; // celé číslo desiatková číselná hodnota var b = 012; // osmičkový formát var c = 0xfff; // hexadecimálny formát var d = 0xACFE12; // hexadecimálny formát

Čísla s pohyblivou rádovou čiarkou sú čísla s desatinnou časťou alebo sú to čísla vyjadrené vo vedeckom zápise. Vedecký zápis čísel má nasledujúci tvar: číslo so zlomkovou desatinnou časťou, za ktorým nasleduje písmeno e, ktoré môže byť uvedené ako veľké, tak aj malé, potom voliteľné znamienko + alebo - a exponent celého čísla.

Var a = 6,24; // reálne číslo var b = 1,234E+2; // reálne číslo, ekvivalentné 1,234 X 10² var c = 6,1e-2; // skutočné číslo, ekvivalentné 6,1 X 10‾²

2.2.3. Booleovský typ

Tento typ má dve hodnoty, true, false. Používa sa na porovnávanie a testovanie podmienok.

Var answer = potvrdiť("Páčil sa vám tento článok?\n Kliknite na tlačidlo OK. Ak nie, kliknite na tlačidlo Zrušiť."); if (odpoveď == pravda) (​upozornenie("Ďakujem!"); )

Existujú aj špeciálne typy jednoduchých hodnôt:
nulový typ - tento typ má jedinú hodnotu null, ktorá sa používa na reprezentáciu neexistujúcich objektov.

undefined type - typ premennej underfined znamená absenciu počiatočnej hodnoty premennej, ako aj neexistujúcu vlastnosť objektu.

Zložené typy údajov pozostávajú z viac ako jednej hodnoty. Patria sem objekty a špeciálne typy objektov – polia a funkcie. Objekty obsahujú vlastnosti a metódy, polia sú indexovanou kolekciou prvkov a funkcie pozostávajú z kolekcie príkazov.

2.3. Globálne a lokálne premenné

Premenné podľa rozsahu sa delia na globálne a lokálne. Rozsah je časť skriptu, v rámci ktorej je názov premennej priradený k tejto premennej a vracia jej hodnotu. Premenné deklarované v tele funkcie sa nazývajú lokálne premenné a možno ich použiť iba v rámci danej funkcie. Lokálne premenné sa vytvárajú a ničia spolu s príslušnou funkciou.

Premenné deklarované vo vnútri prvku alebo vo funkcii, ale bez použitia kľúčového slova var, sa nazývajú globálne. Sú prístupné, pokiaľ je stránka načítaná v prehliadači. Takéto premenné môžu používať všetky funkcie, čo im umožňuje vymieňať si údaje.

Globálne premenné končia v globálnom mennom priestore, kde interagujú jednotlivé komponenty programu. Neodporúča sa deklarovať premenné týmto spôsobom, pretože podobné názvy premenných už môžu používať iný kód, čo spôsobí zlyhanie skriptu.

Globálny priestor v JavaScripte je reprezentovaný objektom globálneho okna. Pridanie alebo zmena globálnych premenných automaticky aktualizuje globálny objekt. Aktualizácia globálneho objektu zase automaticky aktualizuje globálny priestor názvov.

Ak majú globálna a lokálna premenná rovnaký názov, lokálna premenná bude mať prednosť pred globálnou.

Lokálne premenné deklarované v rámci funkcie v rôznych blokoch kódu majú rovnaký rozsah. Odporúča sa však umiestniť všetky deklarácie premenných na začiatok funkcie.