JavaScript. Tipovi podataka i operatori. Javascript tipovi podataka postavljaju tip varijable

Varijabla je imenovana memorijska lokacija u koju možete pohraniti neke informacije i preuzeti ih iz nje.

Deklarisanje (kreiranje) varijabli se vrši pomoću ključne riječi var.

// poruka - ime varijable var message;

Kada kreirate varijablu, možete joj odmah dodijeliti vrijednost.

Dodjeljivanje vrijednosti varijabli se vrši pomoću operatora “=”.

// na primjer, kreirajte varijablu email i dodijelite joj string " [email protected]"var email = " [email protected]"; // postavite varijablu email na novu vrijednost email = " [email protected]";

Da biste dobili vrijednost varijable, jednostavno je pozovite po imenu.

// na primjer, izbaciti vrijednost varijable e-pošte na konzolu pretraživača: console.log(email);

Da biste deklarirali više od jedne varijable koristeći jednu ključnu riječ var, morate koristiti zarez.

Var cijena = 78,55, količina = 10, poruka;

JavaScript je dinamički ili slabo kucani jezik. To znači da kada je varijabla deklarirana, ne mora specificirati tip podataka koji može prihvatiti. Stoga, prvo možete smjestiti vrijednost jednog tipa podataka u varijablu, a zatim drugog.

Var output = "uspjeh"; // varijabla ima niz podataka tipa output = 28; // ista varijabla, ali već tipa podataka "broj" output = true; // ista varijabla, ali već pohranjuje Booleovu vrijednost

Vrijednost varijable može se mijenjati neograničen broj puta.

// varijabla starosti je kreirana var age; // promenljivoj starosti se dodeljuje vrednost 67 age = 67; // promenljiva starost je postavljena na "Starost za odlazak u penziju" age = "Starost za odlazak u penziju"; // varijabilna starost je postavljena na 55 age = 55;

Dobra praksa pri razvoju klijentskih aplikacija je korištenje samo jednog tipa podataka u datoj varijabli, tj. Nemojte pisati vrijednosti različitih tipova podataka u varijablu. Da biste razumjeli koji tip podataka treba očekivati ​​u varijabli, prilikom kreiranja varijable, preporučuje se da je odmah inicijalizirate određenom vrijednošću.

Ime varijable može se sastojati od slova, brojeva i simbola $ i _. U ovom slučaju, prvi znak varijable ne smije biti broj. Osim toga, ne možete koristiti rezervirane riječi kao imena varijabli.

// kreiranje dvije varijable, prva varijabla se zove telefon, druga je poruka; var telefon, poruka;

Važna je veličina slova u imenu varijable. To jest, na primjer, varijabla telefon i Telefon su dvije različite varijable.

Ako se ne koristi strogi način rada, tada možete kreirati varijablu s početnom vrijednošću bez ključne riječi var.

Cijena = 250,00; // kreirao varijablu i inicijalizirao je brojem 250,00 posto = "20%"; // kreirao varijablu i inicijalizirao je nizom “20%”

Ali kreiranje varijabli na ovaj način se ne preporučuje.

Tipovi podataka

U JavaScript-u se tipovi podataka mogu podijeliti na primitivne i objektne.

Varijable koje sadrže primitivne tipove podataka pohranjuju svoju vrijednost eksplicitno.

Postoji 5 primitivnih tipova podataka u JavaScriptu:

  • broj;
  • string;
  • boolean tip (boolean);
  • null;
  • nedefinisano.

Ako se jednoj varijabli dodijeli vrijednost druge koja sadrži primitivni tip podataka, ona će dobiti vlastitu kopiju te vrijednosti.

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

Varijable koje sadrže objekt zapravo ne pohranjuju sam objekt, već referencu na njega.

Ako se jednoj varijabli dodijeli vrijednost druge koja sadrži objekt (vezu na njega), tada će i ona dobiti vezu do njega. Kao rezultat ove operacije, ove dvije varijable će sadržavati referencu na isti objekt.

// primjer 1 (sa tipom podataka "object") var coord1 = (x: 77, y: 100), coord2 = coord1; coord1.x = 55; // postavlja x svojstvo objekta na novu vrijednost coord2.x; // 55, jer coord1 i coord2 sadrže referencu na isti objekt // primjer 2 (sa tipom podataka niza) var coord1 = , coord2 = coord1; koordinacija1 = 55; // postavlja element s indeksom 0 na novu vrijednost coord2; // 55, jer coord1 i coord2 sadrže referencu na isti objekt // primjer 3 (sa tipom podataka "datum") var date1 = new Date(2018,00,01), date2 = date1; datum2 = date2.setDate(date2.getDate()+7); // povećavamo datum za 7 dana date1; // 01.07.2018, jer datum1 i datum2 sadrže referencu na isti objekt

Broj

Numerički tip podataka u JavaScript-u je generički. Koristi se za predstavljanje i cijelih brojeva i razlomaka.

Var int = 5; // cijeli broj var float = 5.98; // razlomak broj

Format za predstavljanje brojeva u JavaScript-u je u skladu sa IEEE 754-2008 standardom.

Cijeli brojevi u JavaScript-u mogu se specificirati ne samo u decimalni sistem brojevni sistem, ali i u oktalnom (0) ili heksadecimalnom brojevnom sistemu (0x) koristeći prefikse naznačene u zagradama:

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

Brojeve je moguće pisati u eksponencijalnom obliku:

Var num = 2e3; // eksponencijalna notacija broja 2*10^3 (2000) num = 2e-3; // eksponencijalna notacija broja 2*10^-3 (0.002) num = 3.2e3; // 3200 num = 1.5e-2; // 0,015

Pored brojeva, numerički tip podataka sadrži i posebne numeričke vrijednosti:

  • Beskonačnost (pozitivna beskonačnost);
  • -Beskonačnost (negativna beskonačnost);
  • NaN (nije broj).

Posebna vrijednost Beskonačnost znači vrlo veliki pozitivan broj, tj. broj koji se ne može predstaviti u JavaScriptu jer je prevelik.

Posebna značenja -Beskonačnost znači, naprotiv, veoma veliki negativan broj, tj. broj koji se ne može predstaviti JavaScript-om jer je također prevelik.

Primjer izraza koji će vratiti posebne numeričke vrijednosti kao rezultat njihovog izračunavanja:

5/0; // Beskonačnost -5/0; // -Infinity Math.pow(10,399); // Beskonačnost (10 na stepen od 399) Math.pow(10,399); // -Beskonačnost (-10 na stepen od 399)

NaN vrijednost se vraća kao rezultat izvođenja matematičkih operacija koje JavaScript ne može izračunati.

5 - "Zdravo"; // NaN (oduzmi red od broja 5) 1000 / "20px"; // NaN (broj podijeljen nizom) true * "1rem"; // NaN (booleova vrijednost istinita pomnožena nizom)

Ono što je veoma interesantno je da vrednost NaN u JavaScript-u nije jednaka ničemu uključujući i njega samog.

NaN == NaN; // false NaN === NaN; //false

Boolean tip podataka

Boolean je primitivan tip podataka koji ima samo dvije vrijednosti: true i false.

Var a = istina; var b = lažno;

String

String je tip podataka koji se koristi u JavaScriptu za predstavljanje teksta.

JavaScript string se može sastojati od 0 ili više karaktera.

JavaScript uvijek koristi Unicode kao format stringa.

Kreiranje stringa (literala stringa) se vrši zatvaranjem teksta u jedan ili dvostruki navodnici.

"JavaScript"; "ECMAScript";

U JavaScriptu nema razlike između jednostrukih i dvostrukih navodnika.

Ali, u nekim slučajevima ima smisla koristiti jednostruke navodnike umjesto dvostrukih navodnika i obrnuto.

Na primjer, kada niz sadrži dvostruke navodnike, zgodnije ga je staviti u jednostruke navodnike. Ovo će eliminirati potrebu za izbjegavanjem dvostrukih navodnika u njemu.

""ECMAScript""; // bez izlaza (koristeći jednostruke navodnike) "\"ECMAScript\""; // s bježanjem

Niz u JavaScript-u može sadržavati posebne znakove. Na primjer, \n (prevod reda), \t (tab), \r (povratak nosača), itd.

"Ovo je rečenica.\nI ovo je također rečenica, ali će početi od novog reda.";

Sa stringovima možete izvesti operaciju sabiranja (unije) ili, drugim riječima, spajanja. Za to se koristi operator "+". Značenje ove operacije je dodavanje drugog reda na kraj prvog.

"Volim " + "JavaScript"; // Volim JavaScript

Vrijednost je "nedefinisana"

undefined je poseban primitivni tip podataka koji ima jednu vrijednost jednaku undefined .

Ovaj tip podataka ima deklariranu varijablu kojoj još nije dodijeljena vrijednost.

Var num; // nedefinisano

Nedefinirana vrijednost će također biti vraćena kada se pristupa nepostojećem svojstvu objekta.

Var obj = (); // prazan objekat obj.prop; // nedefinisano

"null" vrijednost

null je poseban primitivni tip podataka koji ima jednu vrijednost jednaku null.

null je samo posebna vrijednost koja ima značenje "ništa" ili "nepoznata vrijednost", tj. očigledno ne znači ništa.

Objekat

Objekt je struktura podataka koja se sastoji od parova ime-vrijednost.

Kreiranje objekta koristeći literalnu notaciju objekta radi se na sljedeći način:

(ime_1: vrijednost_1, ime_2: vrijednost_2, ime_3: vrijednost_3, ... )

Kao što možete vidjeti, ime je odvojeno od vrijednosti pomoću dvotočke, a parovi su odvojeni jedan od drugog pomoću zareza.

Štaviše, ako je vrijednost para funkcija, onda se naziva metodom ovog objekta. Svi ostali parovi, tj. parovi u kojima se funkcija ne koristi kao vrijednost nazivaju se svojstva objekta.

Drugim riječima, objekt je struktura podataka koja se sastoji od svojstava i metoda.

Var person = (ime: "Vitaly", starost: 27, getAge: funkcija () ( vrati "Age: " + this.age; ) )

Pristup svojstvima objekta vrši se kroz tačku ili korištenjem zagrada.

// prikazuje vrijednost svojstva age u konzoli pretraživača // 1. metod (preko tačke) console.log(person.age); // Metoda 2 (koristeći zagrade) console.log(person["age"]); // pozivamo metodu getAge; vrijednost koju vrati bit će objavljena na konzoli console.log(person.getAge());

typeof operator

Operator typeof se koristi za dobijanje informacija o tipu podataka izraza kao string.

Sintaksa operatora typeof (opcija bez zagrada):

Vrsta izraza

Tip sintakse operatora (koristeći zagrade):

Vrsta(izraz)

Ime varijante, starost = 37, email = " [email protected]", isLicense = true, interes: null, lastExperience: ( period: "jun 2011 - jun 2018", mjesto: "ISACA, Moskva", pozicija: "web dizajner" ), getExperience: function() ( vrati lastExperience.period + " ("+ lastExperience.position + " - " + lastExperience.place + ")"; ); typeof name; // "nedefined" typeof age; // "number" typeof isLicense; // "boolean" typeof interest; / / "object" (1) typeof lastExperience; // "object" typeof getExperience; // "function" (2) /* (1) je greška koja je prisutna u jeziku od njegove prve implementacije; nije bila fiksno da bi se održala kompatibilnost i to se mora uzeti u obzir prilikom pisanja skripti; null je primitivan tip podataka, nije objekt */ /* (2) - vrlo je zgodno da operator typeof razdvaja funkcije odvojeno; ali funkcija u JavaSciptu je također objekt; to se može lako provjeriti izvođenjem sljedeće konstrukcije: */ typeof getExperience.__proto__.__proto__ // "objekt" (prototip funkcije je objekt)

Konstante

Sa izdavanjem ECMAScript 6, postalo je moguće kreirati konstante. Ovo se radi pomoću ključne riječi const.

Const COLOR_RED = "#ff0000";

Konstanta je varijabla čija je vrijednost zaštićena od promjene. One. Kada pokušate promijeniti vrijednost, pojavit će se greška.

Const COLOR_RED = "#ff0000"; COLOR_RED = "#f44336"; // Uncaught TypeError: Dodjela konstantnoj varijabli.

Ako, na primjer, konstanta sadrži objekt, onda se ne može promijeniti, odnosno referenca na njega. Ali svojstva ovog objekta mogu se promijeniti.

Const COLORS = ( crvena: "#ff0000", zelena: "#00ff00", plava: "#00ff00" ) BOJE = ["#ff0000","#00ff00","#00ff00"]; // Uncaught TypeError: Dodjela konstantnoj varijabli. COLORS.green = "#4caf50";

Tipovi podataka pomažu u izgradnji klasifikacije podataka u programskim jezicima. Na primjer, broj i niz znakova su različite vrste podataka koje će JavaScript različito tretirati.

Ovo je važno jer svaki tip podataka može poprimiti određene vrijednosti i izvršiti određene radnje. Da biste mogli izvoditi operacije nad varijablama u JavaScriptu, važno je razumjeti tip podataka svake date varijable.

Ovaj vodič će vas upoznati sa JavaScript tipovima podataka.

Napomena: Informacije u ovom vodiču nisu iscrpne, ali će vam dati pregled osnovnih JavaScript opcija.

Dynamic Typing

JavaScript je dinamički jezik. To znači da se provjera tipa podataka vrši u vrijeme izvođenja, a ne u vrijeme kompajliranja.

U dinamičkim jezicima, varijable istog imena se mogu koristiti za pohranjivanje različite vrste podaci.

Na primjer, varijabla t, definirana ključnom riječi var, može pohraniti različite tipove podataka; također se može inicijalizirati ali ostaviti nedefinirano:

var t = 16; // t je broj
var t = "Tereza"; // t je niz
var t = istina; // t je Boolean
var t; // t je nedefinirano

Sve t varijable sadrže različite JavaScript tipove podataka. U JavaScriptu, ne morate eksplicitno specificirati tip podataka varijable prije nego što je koristite.

Brojevi

JavaScript ima jedan numerički tip podataka, ne pravi razliku između cijelih brojeva i brojeva s pomičnim zarezom. Stoga se brojevi u JavaScript-u mogu pisati sa ili bez decimalnih mjesta:

var num1 = 93;
var num2 = 93,00;

U gornjem primjeru, obje varijable sadrže brojeve, bez obzira da li postoji zarez ili ne.

Naučna notacija u JavaScript-u vam omogućava da skraćujete veoma velike ili male brojeve:

var num3 = 987e8; // 98700000000
var num4 = 987e-8; // 0,00000987

U JavaScriptu se brojevi smatraju preciznim do 15 cifara. To znači da će se nakon dostizanja 16. znamenke brojevi zaokružiti:

var num5 = 999999999999999; // ostaje kao 999999999999999
var num6 = 9999999999999999; // zaokruženo na 100000000000000000

Takođe, brojevi u JavaScript-u imaju tri simbolička značenja:

beskonačnost - numerička vrijednost, što je pozitivan broj koji se približava beskonačnosti.

Beskonačnost je numerička vrijednost koja predstavlja negativan broj koji se približava beskonačnosti.

NaN – Not-a-Number, posebno stanje broja s pomičnim zarezom.

Infinity i -Infinity se vraćaju kada se broji broj iznad maksimalnog mogućeg broja dostupnog u JavaScript-u. Pojavljuju se i prilikom brojanja nedefiniranih vrijednosti, kao što je dijeljenje sa nulom:

var num7 = 5 / 0; // Infinity
var num8 = -5 / 0; // -Beskonačnost

Tehnički, Infinity se vraća ako je broj veći od 1,797693134862315E+308, što je gornja granica u JavaScript-u.

Isto tako, -Infinity će biti prikazano kada broj prijeđe donju granicu, -1,797693134862316E+308.

Broj beskonačnosti se također može koristiti u petljama:

dok (num9 != Beskonačnost) (
// Kod ovdje će se izvršiti kroz num9 = Beskonačnost
}

Za nedefinirane brojeve, NaN se ispisuje. Ako pokušate izvesti matematičku operaciju nad brojem i nenumeričkom vrijednošću, dobit ćete NaN. Na primjer:

var x = 20 / "Ajkula"; // x će biti NaN

Budući da se 20 ne može podijeliti nizom Shark, vrijednost x će biti NaN.

Međutim, ako se string može procijeniti kao numerička vrijednost, JavaScript će procijeniti matematički izraz:

var y = 20 / "5"; // y će biti 4

Budući da JavaScript može tretirati 5 kao numeričku vrijednost, 5 će raditi s operatorom matematičkog dijeljenja.

Ako je jedna varijabla u izrazu postavljena na NaN, rezultat će biti NaN, čak i ako je drugi operand broj.

var a = NaN;
var b = 37;
var c = a + b; // c će biti NaN

Dakle, u JavaScript-u postoji samo jedan numerički tip podataka. U JavaScript-u, nema potrebe da se brojevi odvajaju na cele brojeve i brojeve s pokretnim zarezom jer je JavaScript dinamički jezik.

Strings

Niz je niz od jednog ili više znakova (slova, brojeva i drugih simbola). Stringovi predstavljaju tekstualne podatke.

U JavaScriptu, nizovi dolaze u jednostrukim i dvostrukim navodnicima. Da biste kreirali niz, morate niz znakova staviti u navodnike:

var singleQuotes = "Ovo je niz u jednostrukim navodnicima.";
var doubleQuotes = "Ovo je niz u dvostrukim navodnicima.";

Možete koristiti jednostruke ili dvostruke navodnike, ali morate koristiti jednu vrstu navodnika dosljedno unutar istog koda.

Program "Zdravo, svijet!" pokazuje kako se nizovi koriste u kompjuterskom programiranju. U suštini, in u ovom primjeru string je niz znakova koji čini frazu "Zdravo, svijet!" u alert().





funkcija helloFunction() (
alert("Zdravo, svijet!");
}



Kliknite me



Pokretanjem koda i klikom na dugme Klikni me, videćete iskačući prozor sa tekstom:

Kao i drugi tipovi podataka, nizovi se mogu pohraniti u varijablama.

var hw = "Zdravo, svet!";

Zatim možete prikazati niz pozivanjem varijable:

...

var hw = "Zdravo, svet!";
funkcija helloFunction() (
upozorenje(hw);
}

...
Zdravo svijete!

Stringovi omogućavaju prosljeđivanje informacija korisniku i nazad u program.

Boolean tip podataka

Boolean (ili Boolean) tip podataka sastoji se od dvije vrijednosti – true i false.

Ovaj tip se koristi za predstavljanje istinitih vrijednosti povezanih s logikom i algoritmima u informatici.

Napomena: Ovaj tip podataka je nazvan po matematičaru Georgeu Booleu.

Mnoge operacije u matematici daju rezultate koji se mogu ocijeniti kao istiniti ili lažni:

Više nego:

  • 500 > 100 tačno
  • 1 > 5 netačno

Manje od:

  • 200 < 400 true
  • 4 < 2 false
  • 5 = 5 tačno
  • 500 = 400 netačno

Kao i drugi tipovi, Boolean tip podataka može biti pohranjen u varijablama.

var myBool = 5 > 8; // false

Pošto 5 nije veće od 8, myBool će biti netačan.

Dok kodirate u JavaScript-u, upoznaćete se sa načinom na koji funkcionišu logički podaci i kako različite funkcije i operacije procene istine mogu da promene tok programa.

Nizovi

Niz može sadržavati više vrijednosti unutar jedne varijable. To znači da možete pohraniti listu vrijednosti unutar niza i iterirati kroz njih.

Svaka vrijednost unutar niza naziva se element. Elementima niza možete pristupiti pomoću indeksa.

Nizovi su definirani uglastim zagradama.

Niz nizova izgleda ovako:

var fish = ["ajkula", "sipa", "riba klovn", "jegulja"];

Pozivanjem varijable ribe dobit ćete rezultat:

["ajkula", "sipa", "riba klovn", "jegulja"]

Nizovi su vrlo fleksibilan tip podataka jer su promjenjivi: možete dodavati, uklanjati i mijenjati vrijednosti elemenata.

Objekti

Objekt u JavaScript-u sastoji se od parova ključ:vrijednost.

Sintaksa objekta sastoji se od parova ključ:vrijednost. Objekt je odvojen vitičastim zagradama s obje strane (()).

Parovi u objektu su razdvojeni razmacima:

var sammy = (ime:"Wally", prezime:"Ajkula", boja:"plava", lokacija:"ocean");

Objekt se također može napisati u više redova (ovo posebno vrijedi za velike objekte).

var wally = (
ime: "Wally",
prezime: "Ajkula",
boja: "plava",
lokacija: "Ocean"
};

Rad sa više tipova podataka

Svaki program koji kreirate vjerovatno će sadržavati više tipova podataka, ali operacije se obično izvode na jednom tipu podataka. matematika se primjenjuje na brojeve, a sečenje se primjenjuje na nizove.

Korištenjem operatora koji rade sa svim vrstama podataka (na primjer, + operator može dodati brojeve ili izvršiti konkatenaciju nizova), možete dobiti neočekivane rezultate.

Ako kreirate varijablu za konkatenaciju, JavaScript će svaki element interpretirati kao string.

var o = "Ocean" + 5 + 3;

Pozivanjem varijable o dobit ćete sljedeći rezultat:

Međutim, ako niz prvo sadrži brojeve, a zatim niz, + operator će izvršiti zbrajanje, a zatim konkatenaciju:

var p = 5 + 3 + "Ocean";
8Ocean

Budući da su rezultati nepredvidivi, pogodnije je izvoditi operacije i metode u jednom tipu podataka. Međutim, JavaScript ne vraća greške prilikom miješanja tipova podataka, kao što to rade neki drugi programski jezici.

Zaključak

Sada ste upoznati sa JavaScript tipovima podataka. Svaki od tipova navedenih ovdje je važan pri pisanju JavaScript programa.

Oznake: Varijabla je identifikator kojem je dodijeljena vrijednost. Promenljivoj se može pristupiti u programu, čime se radi sa vrednošću koja joj je dodeljena.

Sama JavaScript varijabla ne sadrži informacije o vrsti vrijednosti koje će biti pohranjene u njoj. To znači da pisanjem, na primjer, stringa u varijablu, kasnije možete u nju upisati broj. Takva operacija neće uzrokovati grešku u programu. Zbog toga se JavaScript ponekad naziva "neupisanim" jezikom.

Prije nego što se varijabla može koristiti, ona mora biti deklarirana pomoću ključne riječi var ili let. Ako govorimo o konstanti, koristi se ključna riječ const. Možete deklarisati varijablu i dodijeliti joj vrijednost bez korištenja ovih ključnih riječi, ali se to ne preporučuje.

Ključna riječ var Prije ES2015 standarda, upotreba ključne riječi var bila je jedini način deklaracije varijabli.

Var a = 0
Ako izostavite var u ovoj konstrukciji, vrijednost će biti dodijeljena nedeklariranoj varijabli. Rezultat ove operacije ovisi o načinu u kojem se program izvršava.

Dakle, ako je uključen takozvani strogi način rada, to će uzrokovati grešku. Ako strogi način rada nije omogućen, varijabla će biti implicitno deklarirana i dodijeljena globalnom objektu. To posebno znači da će varijabla koja je implicitno deklarirana u funkciji na ovaj način ostati dostupna nakon što se funkcija završi. Obično se očekuje da varijable deklarirane u funkcijama ne “idu izvan” njihovog opsega. izgleda ovako:

Funkcija notVar() ( bNotVar = 1 //bolje ne raditi ovo) notVar() console.log(bNotVar)
1 će se pojaviti u konzoli; niko obično ne očekuje takvo ponašanje od programa; izraz bNotVar = 1 ne izgleda kao pokušaj deklarisanja i inicijalizacije varijable, već kao pokušaj pristupa varijabli koja se nalazi u opsegu izvan njega funkciju (ovo je sasvim normalno). Kao rezultat toga, implicitne deklaracije varijabli zbunjuju one koji čitaju kod i mogu dovesti do neočekivanog ponašanja programa. Kasnije ćemo govoriti i o funkcijama i o opsegu, ali za sada pokušajte uvijek koristiti specijalizirane ključne riječi kada je značenje izraza deklariranje varijable. Ako je u ovom primjeru tijelo funkcije prepisano kao var bNotVar = 1, tada će pokušaj pokretanja gornjeg fragmenta koda rezultirati porukom o grešci (možete je vidjeti u konzoli pretraživača).

Na primjer, to može izgledati ovako: Uncaught ReferenceError: bNotVar nije definiran. Njegovo značenje se svodi na činjenicu da program ne može raditi sa nepostojećom varijablom. Mnogo je bolje vidjeti takvu poruku o grešci kada prvi put pokrenete program nego pisati nerazumljiv kod koji se može ponašati neočekivano.

Ako, prilikom deklarisanja varijable, nije inicijalizirana niti joj je dodijeljena vrijednost, automatski će joj biti dodijeljena nedefinirana vrijednost.

Var a //typeof a === "undefined"
Varijable deklarirane ključnom riječi var mogu se ponovo deklarirati mnogo puta, dodjeljujući im nove vrijednosti (ali to može biti zbunjujuće za osobu koja čita kod).

Var a = 1 var a = 2
Možete deklarirati više varijabli u jednom izrazu:

Var a = 1, b = 2
Opseg varijable je područje programa u kojem je ova varijabla dostupna (vidljiva).

Varijabla inicijalizirana ključnom riječi var izvan funkcije dodjeljuje se globalnom objektu. Ima globalni opseg i dostupan je s bilo kojeg mjesta u programu. Ako je varijabla deklarirana pomoću ključne riječi var unutar funkcije, tada je vidljiva samo unutar te funkcije, jer je za nju lokalna varijabla.

Ako funkcija koja koristi var deklarira promjenljivu čije je ime isto kao varijabla u globalnom opsegu, ona će "prebaciti" globalnu varijablu. To jest, kada se pristupa takvoj varijabli unutar funkcije, koristit će se njena lokalna verzija.

Važno je shvatiti da blokovi (područja koda zatvorena u vitičaste zagrade) ne stvaraju nove opsege. Novo područje vidljivost se kreira kada se funkcija pozove. Ključna riječ var ima ono što se zove funkcionalni opseg, a ne opseg bloka.

Ako je varijabla deklarirana u kodu funkcije, vidljiva je cijelom kodu funkcije. Čak i ako je varijabla deklarirana pomoću var na kraju koda funkcije, može joj se pristupiti na početku koda, pošto JavaScript ima mehanizam za podizanje varijabli. Ovaj mehanizam "podiže" deklaracije varijabli, ali ne i njihove inicijalizacijske operacije. Ovo može biti izvor zabune, pa neka vam postane navika da deklarirate varijable na početku funkcije.

▍Ključna riječ let Ključna riječ let uvedena je u ES2015 i, na pojednostavljen način, može se nazvati “blok” verzijom var . Promjenljive deklarirane s ključnom riječi let imaju opseg bloka, izraza ili izraza u kojem su deklarirane i ugniježđenih blokova.

Ako se sama riječ „pusti“ ne čini baš jasnom, možete zamisliti da umjesto nje koristite riječ „pusti“. Tada se izraz let color = "red" može prevesti na engleski na sljedeći način: "neka boja bude crvena", a na ruski na sljedeći način: "neka boja bude crvena".

Koristeći ključnu riječ let, možete izbjeći nejasnoće koje dolaze s ključnom riječi var (na primjer, nećete moći dvaput deklarirati istu varijablu koristeći let ). Upotreba let izvan funkcije, recimo pri inicijalizaciji petlji, ne stvara globalne varijable.

Na primjer, ovaj kod će generirati grešku:

Za (neka je i = 0; i< 5; i++) { console.log(i) } console.log(i)
Ako je, kada je petlja inicijalizirana, brojač i deklariran pomoću ključne riječi var, tada će i biti dostupan izvan petlje nakon što završi svoj rad.

Ovih dana, kada se razvijaju JS programi zasnovani na savremenim standardima, sasvim je moguće potpuno napustiti var i koristiti samo ključne riječi let i const.

▍Ključna riječ const Vrijednosti varijabli deklariranih pomoću ključnih riječi var ili let mogu se prepisati. Ako se umjesto ovih ključnih riječi koristi const, tada se konstanti deklariranoj i inicijaliziranoj uz njenu pomoć ne može dodijeliti nova vrijednost.

Const a = "test"
U ovom primjeru, konstanti a ne može se dodijeliti nova vrijednost. Ali treba napomenuti da ako a nije primitivna vrijednost poput broja, već objekt, korištenje ključne riječi const ne štiti ovaj objekt od promjena.

Kada kažu da je objekat pohranjen u varijablu, ono što zapravo misle je da varijabla pohranjuje referencu na objekt. Ova veza se ne može promijeniti, ali se može promijeniti sam objekt do kojeg veza vodi.

Ključna riječ const ne čini objekte nepromjenjivim. Jednostavno štiti reference na njih zapisane u odgovarajućim konstantama od promjena. Ovako to izgleda:

Const obj = () console.log(obj.a) obj.a = 1 //radi console.log(obj.a) //obj = 5 //uzrokuje grešku
Tokom inicijalizacije, novi prazan objekat se upisuje u obj konstantu. Pokušaj pristupa njegovom svojstvu a, koje ne postoji, ne uzrokuje grešku. Konzola postaje nedefinisana. Nakon toga objektu dodajemo novo svojstvo i pokušavamo mu ponovo pristupiti. Ovaj put vrijednost ovog svojstva je 1 u konzoli. Ako dekomentirate posljednji red primjera, pokušaj izvršenja ovog koda će rezultirati greškom.

Ključna riječ const je vrlo slična let , posebno ima blok opseg.

U modernim uvjetima sasvim je prihvatljivo koristiti ključnu riječ const za deklariranje svih entiteta čije vrijednosti se ne planiraju mijenjati, pribjegavajući dozvoli samo u posebnim slučajevima. Zašto? Cijela poenta je u tome da je najbolje nastojati koristiti najjednostavnije moguće konstrukcije kako ne bi zakomplikovali program i izbjegli greške.

JavaScript tipovi podataka se ponekad nazivaju "netipiziranim" jezikom, ali to nije slučaj. Istina je da možete pisati vrijednosti različitih tipova u varijable, ali još uvijek postoje tipovi podataka u JavaScriptu. Konkretno, govorimo o primitivnim i objektnim tipovima podataka.

Da biste odredili tip podataka vrijednosti, možete koristiti typeof operator. Vraća niz koji označava tip operanda.

▍Primitivni tipovi podataka Evo liste JavaScript primitivnih tipova podataka:
  • broj
  • string
  • boolean (boolean vrijednost)
  • null (posebna vrijednost null)
  • nedefinirano (posebna vrijednost nedefinirana)
  • simbol (simbol, koristi se u posebnim slučajevima, uveden u ES6)
Ovdje su data imena tipova podataka onako kako ih vraća typeof operator.

Hajde da razgovaramo o najčešće korišćenim tipovima podataka sa ove liste.

Tip broja Vrijednosti tipa broj u JavaScript-u su predstavljeni kao 64-bitni brojevi s pomičnim zarezom dvostruke preciznosti.

U kodu, numerički literali su predstavljeni kao celi brojevi i razlomci u decimalnom brojevnom sistemu. Možete koristiti druge metode za pisanje brojeva. Na primjer, ako postoji prefiks 0x na početku numeričkog literala, on se percipira kao broj napisan u heksadecimalnom zapisu. Brojevi se također mogu pisati u eksponencijalnoj notaciji (u takvim brojevima se može naći slovo e).

Evo primjera pisanja cijelih brojeva:

10 5354576767321 0xCC // heksadecimalni broj
Evo razlomaka.

3.14 .1234 5.2e4 //5.2 * 10^4
Numerički literali (ovo ponašanje je tipično i za neke druge primitivne tipove), kada pokušate da im pristupite kao objektima, automatski se, za vrijeme trajanja operacije, pretvaraju u odgovarajuće objekte, koji se nazivaju “objekti omotači”. U ovom slučaju govorimo o omotaču objekta Number.

Evo, na primjer, kako izgleda pokušaj pristupa varijabli a, koja sadrži numerički literal, kao objekt u Google Chrome konzoli.

Savjet za omotač broja objekata

Ako, na primjer, koristite metodu toString() za objekt tipa Broj, vratit će prikaz broja u nizu. Odgovarajuća komanda izgleda ovako, koja se može izvršiti u konzoli pretraživača (i u običnom kodu) ovako:

A.toString()
Obratite pažnju na dvostruke zagrade iza naziva metode. Ako ih ne unesete, sistem neće generirati grešku, ali umjesto očekivanog izlaza, vidjet ćete nešto u konzoli što uopće nije slično string prikazu broja 5.

Globalni objekt Number može se koristiti kao konstruktor, uz njegovu pomoć kreirajući nove brojeve (međutim, gotovo se nikada ne koristi u ovom obliku), može se koristiti i kao nezavisan entitet, bez kreiranja njegovih instanci (tj. određenih brojeva predstavljen uz njegovu pomoć). Na primjer, njegovo svojstvo Number.MAX_VALUE sadrži maksimalnu numeričku vrijednost koja se može predstaviti u JavaScriptu.

Vrsta string Vrijednosti tipa string su nizovi znakova. Takve vrijednosti su specificirane kao string literali u jednostrukim ili dvostrukim navodnicima.

"String" "Još jedan niz"
Vrijednosti niza mogu se podijeliti na više dijelova pomoću obrnute kose crte.

"A\string"
Linija može sadržavati takozvane izlazne sekvence, koje se tumače kada se linija izlazi na konzolu. Na primjer, niz \n znači znak novog reda. Znak obrnute kose crte se također može koristiti za dodavanje navodnika u nizove koji su zatvoreni unutar istih navodnika. Izbjegavanje znaka navodnika sa \ uzrokuje da ga sistem ne tretira kao poseban karakter.

"Ja sam programer"
Stringovi se mogu spojiti pomoću + operatora.

"A" + "string"

Literali šablona U ES2015 pojavili su se takozvani šablonski literali ili šablonski nizovi. Oni su stringovi zatvoreni u zadnjim navodnicima (`) i imaju neka zanimljiva svojstva.

`string`
Na primjer, možete zamijeniti određene vrijednosti koje su rezultat evaluacije JavaScript izraza u literale šablona.

`string sa $(nešto)` `niz sa $(nešto+neštoElse)` `string sa $(obj.something())`
Korištenje povratnih navodnika olakšava pisanje string literala u više redova:

`string sa $(nešto)`

Boolean tip JavaScript ima par rezervisanih riječi koje se koriste kada se radi s logičkim vrijednostima: true i false. Operatori poređenja, kao što su == , === ,< , >, vrati true ili false .

Logički izrazi se koriste u naredbama kao što su if i while da pomognu u kontroli toka programa.

Treba napomenuti da tamo gdje se očekuje vrijednost true ili false, možete koristiti druge vrijednosti koje se automatski procjenjuju od strane jezika kao istinite (istina) ili lažne (lažne).

Konkretno, sljedeće su lažne vrijednosti:

0 -0 NaN undefined null "" //prazan niz
Preostale vrijednosti su istinite.

JavaScript tipa null ima posebnu vrijednost, null, koja ukazuje na odsustvo vrijednosti. Slične vrijednosti se koriste u drugim jezicima Tip undefined Vrijednost undefined upisana u određenu varijablu ukazuje da ova varijabla nije inicijalizirana i da za nju ne postoji vrijednost.

Ova vrijednost se automatski vraća iz funkcija čiji rezultati nisu eksplicitno vraćeni pomoću ključne riječi return. Ako funkcija uzima parametar koji nije specificiran kada je pozvana, također se postavlja na undefined.

Da biste provjerili vrijednost za undefined, možete koristiti sljedeću konstrukciju.

Tip varijable === "nedefinisano"

▍Objekti Sve neprimitivne vrijednosti su tipa objekta. Govorimo o funkcijama, nizovima, onome što zovemo "objekti" i mnogim drugim entitetima. Svi ovi tipovi podataka zasnovani su na tipu objekta, i iako se međusobno razlikuju po mnogo čemu, imaju i dosta zajedničkog. . Postoji nekoliko kategorija izraza u JavaScript-u: Aritmetički izrazi Ova kategorija uključuje izraze koji se procjenjuju u brojeve.

1 / 2 i++ i -= 2 i * 2

String izrazi Rezultat evaluacije takvih izraza su stringovi.

"A " + "string" "A " += "string"

Primarni izrazi Literali, konstante i reference na identifikatore spadaju u ovu kategoriju.

2 0.02 "nešto" true false ovaj //kontekst izvršenja, referenca na trenutni objekt nedefinirano i //gdje je i varijabla ili konstanta
Ovo također uključuje neke JavaScript ključne riječi i konstrukcije.

Funkcija klase funkcije* //generator prinosa //naredba za pauziranje/nastavljanje generatorskog prinosa* //delegacija na drugi iterator ili generator asinkrona funkcija* //asinhroni funkcionalni izraz čeka //organizacija čekanja na izvršenje asinkrone funkcije /uzorak /i // regularni izraz() //grupiranje

Inicijalizacijski izrazi za nizove i objekte // literal niza () // literal objekta (a: 1, b: 2) (a: (b: 1)) Logički izrazi Koriste se logički izrazi logički operatori, rezultat njihovog izračunavanja su logičke vrijednosti.

A && b a || b!a

Izrazi pristupa svojstvima Ovi izrazi vam omogućavaju pristup svojstvima i metodama objekata.

Object.property //pozivanje svojstva (ili metode) objektnog objekta object["property"]

Izrazi za kreiranje objekta new object() novi a(1) novi MyRectangle("name", 2, (a: 4)) Izrazi deklaracije funkcije function() () function(a, b) ( return a * b ) (a, b) => a * b a => a * 2 () => ( return 2 ) Pozivni izrazi Takvi izrazi se koriste za pozivanje funkcija ili metoda objekata.

A.x(2) window.resize()

Rad sa objektima Već smo se susreli sa objektima iznad, govoreći o objektnim literalima, pozivanju njihovih metoda i pristupanju njihovim svojstvima. Ovdje ćemo detaljnije govoriti o objektima, posebno ćemo se osvrnuti na mehanizam prototipskog nasljeđivanja i upotrebu ključne riječi class.▍Prototipsko nasljeđivanje JavaScript se ističe među modernim programskim jezicima po tome što podržava prototipsko nasljeđivanje . Većina objektno orijentiranih jezika koristi model nasljeđivanja zasnovan na klasi.

Svaki JavaScript objekat ima posebno svojstvo (__proto__) koje ukazuje na drugi objekat koji je njegov prototip. Objekt nasljeđuje svojstva i metode prototipa.

Recimo da imamo objekat kreiran korišćenjem literala objekta.

Konstantni auto = ()
Ili smo kreirali objekat koristeći konstruktor objekata.

Const car = new Object()
U svakom od ovih slučajeva, prototip objekta automobila će biti Object.prototype .

Ako kreirate niz koji je također objekt, njegov prototip će biti objekt Array.prototype.

Const lista = //ili tako const lista = new Array()
Ovo možete provjeriti na sljedeći način.

Car.__proto__ == Object.prototype //true car.__proto__ == new Object().__proto__ //true list.__proto__ == Object.prototype //false list.__proto__ == Array.prototype //true list.__proto__ == new Array().__proto__ //tačno
Ovdje smo koristili svojstvo __proto__; ono ne mora biti dostupno programeru, ali mu se obično može pristupiti. Treba napomenuti da više na pouzdan način da biste dobili prototip objekta je korištenje globalne metode getPrototypeOf(). Objekat.

Object.getPrototypeOf(novi objekt())
Sva svojstva i metode prototipa su dostupne objektu koji ima taj prototip. Evo, na primjer, kako izgleda njihova lista za niz.


Nagoveštaj niza

Osnovni prototip za sve objekte je Object.prototype.

Niz.prototip.__proto__ == Objekt.prototip
Object.prototype nema prototip.

Ono što smo vidjeli iznad je primjer lanca prototipa.

Kada pokušate pristupiti svojstvu ili metodi objekta, ako sam objekt nema takvo svojstvo ili metodu, vrši se njihova pretraga u njegovom prototipu, zatim u prototipu prototipa i tako sve dok se ne pronađe željeno svojstvo, ili dok se lanac prototipova ne završi.

Osim kreiranja objekata pomoću novog operatora i korištenja literala objekta ili niza, možete kreirati instancu objekta pomoću metode Object.create(). Prvi argument koji se prosljeđuje ovoj metodi je objekt koji će biti prototip objekta koji kreira.

Const car = Object.create(Object.prototype)
Možete provjeriti da li je objekt dio lanca prototipova drugog objekta koristeći metodu isPrototypeOf().

Const lista = Array.prototype.isPrototypeOf(list)

Funkcije konstruktora Iznad smo kreirali nove objekte koristeći funkcije konstruktora koje su već dostupne u jeziku (ključna riječ new se koristi kada ih pozivamo). Takve funkcije možete kreirati sami. Pogledajmo primjer.

Funkcija Osoba(ime) (ovo.ime = ime) Person.prototype.hello = function() ( console.log(this.name) ) neka osoba = nova osoba("Flavio") person.hello() console.log( Person.prototype.isPrototypeOf(person))
Ovdje kreiramo funkciju konstruktora. Kada se pozove, kreira se novi objekat, što je označeno tipkom riječ ovo u tijelu konstruktora. Dodamo svojstvo name ovom objektu i upišemo u njega ono što je proslijeđeno konstruktoru. Ovaj objekat se automatski vraća iz konstruktora. Koristeći funkciju konstruktora, možete kreirati mnogo objekata čija će svojstva imena sadržavati ono što je proslijeđeno konstruktoru kada su kreirani.

Nakon kreiranja konstruktora, njegovom prototipu dodajemo funkciju koja će ispisati na konzolu vrijednost svojstva name objekta kreiranog pomoću ove funkcije. Svi objekti kreirani pomoću ovog konstruktora imat će isti prototip i stoga će koristiti istu funkciju hello(). Ovo se može lako provjeriti kreiranjem drugog objekta tipa Person i poređenjem njegove funkcije hello() sa funkcijom objekta koji već postoji u primjeru (u ovom slučaju, ime funkcije je napisano bez zagrada).

▍Klase U ES6 standardu, JavaScript je uveo koncept „klase“.

Ranije je JavaScript mogao koristiti samo mehanizam nasljeđivanja prototipa koji je gore opisan. Ovaj mehanizam je izgledao neobično za programere koji su došli na JS sa drugih jezika. Stoga su se u jeziku pojavile klase koje su, u suštini, „sintaksički šećer“ za mehanizam nasljeđivanja prototipa. Odnosno, stvoreni objekti tradicionalan način, a objekti kreirani korištenjem klasa imaju prototipove.

Deklaracija klase Ovako izgleda deklaracija klase.

Klasa Osoba ( konstruktor(ime) (ovo.ime = ime) hello() (vrati "Zdravo, ja sam " + ovo.ime + "." ))
Klasa ima identifikator koji se može koristiti za kreiranje novih objekata koristeći novu konstrukciju ClassIdentifier().

Kada se kreira novi objekat, poziva se metoda konstruktora i parametri se prosleđuju u njega.

Možete deklarisati metode u klasi. U našem slučaju, hello() je metoda koju mogu pozvati svi objekti kreirani na osnovu klase. Ovako izgleda kreiranje novog objekta pomoću klase Person.

Const flavio = nova osoba("Flavio") flavio.hello()

Klase nasljeđivanja zasnovane na klasama mogu proširiti druge klase. Objekti kreirani iz takvih klasa će naslijediti i metode originalne klase i metode specificirane u proširenoj klasi.

Ako klasa koja proširuje drugu klasu (podklasu te klase) ima metodu čije je ime isto kao i ime roditeljske klase, ta metoda ima prednost nad originalnom.

Class Programmer proširuje Person ( hello() ( return super.hello() + "Ja sam programer." ) ) const flavio = new Programmer("Flavio") flavio.hello()
Pozivanje metode hello() u gornjem primjeru će vratiti string Zdravo, ja sam Flavio. Ja sam programer.

Klase ne obezbeđuju prisustvo varijabli (svojstava); svojstva objekata kreiranih korišćenjem klasa moraju biti konfigurisana u konstruktoru.

Unutar klase možete pristupiti roditeljskoj klasi pomoću ključne riječi super.

Statičke metode Metode opisane u klasi mogu se pozvati pristupanjem objektima kreiranim iz klase, ali ne pristupanjem samoj klasi. Statičke metode se mogu pozvati direktnim pristupom klasi Privatne metode JavaScript nema ugrađeni mehanizam koji vam omogućava da deklarirate privatne metode. Ovo ograničenje se može prevazići, na primjer, korištenjem zatvaranja Getteri i setteri Možete definirati metode u klasi stavljajući im prefiks sa get ili set ključnim riječima. Ovo vam omogućava da kreirate takozvane gettere i settere - funkcije koje se koriste za kontrolu pristupa svojstvima objekata kreiranih na osnovu klase. Getter se poziva kada pokušate pročitati vrijednost pseudo-svojstva, a setter se poziva kada pokušate upisati novu vrijednost u njega.

Class Person ( konstruktor(ime) (ovo.userName = ime) set name(value) (this.userName = value) dobiti ime() (vratiti this.userName))

Sažetak U ovom materijalu smo govorili o varijablama, tipovima podataka, izrazima i radu sa objektima u JavaScript-u. Tema našeg sljedećeg materijala bit će funkcije.

Dragi čitaoci! Ako već dugo pišete na JS-u, recite nam šta mislite o izgledu ključne riječi class u jeziku.

U ovom tutorijalu uvest ćemo vrlo važan koncept - JavaScript tipove podataka. Preporučujemo da obratite posebnu pažnju na ovaj koncept - ako ga ne razumijete od samog početka, onda ćete se često morati suočiti sa čudnim ponašanjem programa koji ste kreirali.

Dynamic Typing

U toku kompjuterski programi manipulirati različitim vrijednostima, od kojih se svaka može obraditi u programskom jeziku i pripada određenom tipu podataka.

U JavaScript-u, tipovi podataka mogu se podijeliti u dvije kategorije: jednostavne (takođe zvane primitivni) tipovi i složene (takođe se nazivaju referenca ili objekt).

JavaScript je slabo otkucani ili dinamički programski jezik koji omogućava da se tipovi podataka definišu, raščlanjuju i kompajliraju u hodu tokom izvršavanja programa. To znači da ne morate unaprijed definirati tip varijable. Tip će se automatski odrediti tokom izvršavanja programa.
Dakle, u različitim dijelovima programa, ista varijabla može poprimiti vrijednosti različitih tipova:

Tipovi podataka

ECMAScript® standard definira sljedeće tipove podataka:

  • Jednostavni (takođe zvani primitivni) tipovi:
    • Boolean - može uzeti dvije moguće vrijednosti, koje se ponekad nazivaju true i false;
    • null – vrijednost null predstavlja referencu koja upućuje, obično namjerno, na nepostojeći ili netačan objekat ili adresu;
    • nedefinirano – označava unaprijed definiranu globalnu varijablu inicijaliziranu nedefiniranom vrijednošću;
    • numeric (Engleski Number) – numerički tip podataka u formatu 64-bitnog broja s pomičnim zarezom dvostruke preciznosti;
    • string (engleski string) – je niz znakova koji se koristi za predstavljanje teksta;
    • simbol (eng. Symbol) je tip podataka čije su instance jedinstvene i nepromjenljive. (novo u ECMAScript 6).
  • Objekt je zbirka imenovanih vrijednosti, koje se obično nazivaju svojstva objekta.
Razlika između primitivnih i kompozitnih tipova

Prije nego što pogledamo svaki tip podataka, upoznajmo se s operatorom typeof. Operator typeof vraća string koji opisuje tip podataka varijable.
Hajde da demonstriramo kako to radi koristeći sledeći primer:

Primjer skripte deklarira varijable, inicijalizira ih (dodjeljuje vrijednosti), a zatim ispisuje tip svake varijable.

Razlika između primitivnih i kompozitnih tipova podataka nastaje kada se njihove vrijednosti kopiraju.

Kada se varijabli dodijeli vrijednost jednostavnog tipa, sama vrijednost (na primjer, broj) se upisuje u varijablu. Kada promenljivu jednostavnog tipa dodelimo drugoj, ona kopira vrednost. Kao rezultat, svaka varijabla će imati svoju vrijednost i promjene u jednoj od varijabli neće utjecati na vrijednost druge varijable ni na koji način:

Kada promenljivoj dodelimo vrednost složenog (referentnog) tipa, referenca na vrednost (referenca na objekat) se upisuje u varijablu. Kada jednu varijablu (čija vrijednost sadrži referencu na složenu vrijednost) dodijelimo drugoj varijabli, referenca na složenu vrijednost se kopira. Kao rezultat, obje varijable se odnose na istu složenu vrijednost, a promjene u vrijednosti jedne varijable će utjecati na drugu varijablu:

Primitivni tipovi

Svi tipovi podataka u JavaScript-u, osim objekata, su nepromjenjivi ili nepromjenjivi. To znači da se njihove vrijednosti ne mogu mijenjati, već samo prepisati novom, drugačijom vrijednošću. Na primjer, nizovi se ne mogu podešavati karakter po karakter - mogu se samo potpuno prepisati. Vrijednosti takvih tipova nazivaju se "primitivnim".

Najjednostavniji podaci sa kojima program može da radi nazivaju se literali. Literali su brojevi ili nizovi koji se koriste za predstavljanje vrijednosti u JavaScriptu. Dostavljene informacije mogu biti vrlo raznolike, a samim tim i njihova značenja razne vrste. Najjednostavniji tipovi podataka u JavaScript-u se nazivaju osnovni tipovi podataka: brojevi, stringovi i logički brojevi. Svi su klasifikovani kao "primitivni".

Boolean (logički) tip “boolean”

Logičke, ili Boolean vrijednosti (po imenu njihovog izumitelja - Boolean), mogu imati samo jednu od dvije vrijednosti: true (true) ili false (false). Vrijednosti tačne ili false obično se pojavljuju u poredjenju ili logičkim operacijama.

Sljedeći program kreira Booleovu varijablu i zatim testira njenu vrijednost koristeći if/else izraz:

Bilo koji izraz se može koristiti kao uporedni izraz. Svaki izraz koji vraća 0, null, nedefiniran ili prazan niz tumači se kao false. Izraz koji specificira bilo koju drugu vrijednost tumači se kao istinit.

Napomena: Prilikom pisanja logičkih vrijednosti, one se ne stavljaju u navodnike: var myVar = true;
U isto vrijeme, deklariranje var myVar = "true" stvara string varijablu.

Tip broja podataka

U JavaScript-u ne postoji razlika između cijelog broja i broja s pomičnim zarezom – u suštini, JavaScript predstavlja sve brojeve kao vrijednost s pomičnim zarezom.

JavaScript koristi 64-bitni format definisan IEEE-754 standardom za predstavljanje brojeva. Ovaj format može predstavljati brojeve u rasponu od ±1,7976931348623157 × 10308 do ±5 × 10 -324.

Broj koji se nalazi direktno u programskom kodu naziva se numerički literal. Osim decimalnih cjelobrojnih literala, JavaScript prepoznaje heksadecimalne vrijednosti.
Heksadecimalni brojevi mogu uključivati ​​bilo koji niz brojeva od 0 do 9 i slova od a do f, koji moraju početi nizom znakova "0x".

Var a = 255; var b = 0xFF; // Broj 255 u heksadecimalnom zapisu

Osim toga, JavaScript sadrži posebne numeričke vrijednosti:

  • NaN (nije broj ili greška u proračunu). Rezultat je pogrešne matematičke operacije nad nevažećim podacima, kao što su nizovi ili nedefinirana vrijednost.
  • Beskonačnost (pozitivna beskonačnost). Koristi se kada je pozitivan broj prevelik da bi bio predstavljen u JavaScriptu.
  • -Beskonačnost (negativna beskonačnost). Koristi se kada je negativan broj prevelik da bi bio predstavljen u JavaScriptu.
  • ±0 (pozitivno i negativno 0). JavaScript razlikuje pozitivnu i negativnu nulu.
String tip podataka

Tip stringa je nepromjenjivi, uređeni niz 16-bitnih vrijednosti, od kojih svaka predstavlja Unicode karakter (slova, brojevi, interpunkcija, posebni znakovi i razmaci). Redovi mogu biti prazni ili se sastojati od jednog ili više znakova. Nizovi se kreiraju pomoću dvostrukih (") ili jednostrukih (") navodnika. Niz omeđen parom jednostrukih navodnika može koristiti dvostruke navodnike, i obrnuto, jednostruki navodniki se mogu koristiti unutar niza zatvorenog parom dvostrukih navodnika:

U JavaScriptu ne postoji razlika između dvostrukih i jednostrukih navodnika, ali navodnici na početku i na kraju stringa ne bi trebali biti različiti. Na primjer, izraz poput ovog bi uzrokovao sintaksičku grešku:

var firstName = "Max"; //sintaksička greška - različiti citati

Napomena: JavaScript nema poseban tip podataka od jednog znaka kao što je char u C, C++ i Javi. Jedan znak je predstavljen nizom jedinične dužine.

Null tip podataka Null tip sadrži jednu posebnu vrijednost—null.

Ključna riječ null ne može se koristiti kao naziv funkcije ili varijable. Vrijednost null je referenca na "prazan" objekat i ima posebnu svrhu - obično se koristi za inicijalizaciju varijable kojoj će se kasnije dodijeliti vrijednost.

Operator typeof za nultu vrijednost vraća string "object", što ukazuje da je null vrijednost poseban "prazan" objekat.

Nedefinirani tip podataka

Nedefinirani tip formira vlastiti tip, koji sadrži jednu posebnu vrijednost - nedefiniran. Ovo je vrijednost varijable deklarirane pomoću var operatora, ali nije inicijalizirana:

Nedefinirana vrijednost se vraća kada se pristupa varijabli kojoj nikada nije bila dodijeljena vrijednost, nepostojećem svojstvu objekta ili elementu niza.

Treba napomenuti da se varijabla sa nedefiniranom vrijednošću razlikuje od varijable koja uopće nije definirana:

U ovom primjeru, metoda alert() prikazuje vrijednost varijable starosti, koja je nedefinirana. U drugom slučaju, nedeklarirana car varijabla se prosljeđuje metodi alert(), što dovodi do greške.

Sljedeći primjer može biti donekle zbunjujući za programere početnike, jer... Operator typeof vraća nedefinirano i za neinicijaliziranu i za nedeklariranu varijablu:

U gornjem primjeru, varijabla age je deklarirana, ali joj ništa nije upisano, tako da je njena vrijednost samo nedefinirana. Varijabla automobila nije deklarirana - u stvari, ne postoji. Međutim, typeof vraća string nedefiniran u oba slučaja. Ovo, naravno, ima smisla, jer je nemoguće izvesti bilo koju operaciju s bilo kojom od ovih varijabli, iako su tehnički potpuno različite.

Napomena: Preporučuje se da uvijek inicijalizirate deklariranu varijablu. U ovom slučaju, znat ćete da typeof operator vraća nedefinirano jer varijabla nije deklarirana, a ne zato što nije inicijalizirana.

Vrijednost undefined izvedena je iz null , tako da ih u ECMA-262 == operator ekvivalentnosti tretira kao jednake:

Iako su null i undefined povezani, koriste se različito. Ne biste trebali eksplicitno dodijeliti nedefiniranu vrijednost varijabli, ali to se ne odnosi na null. U slučaju da traženi objekt nije dostupan, umjesto njega treba koristiti null. Ovo ukazuje da je null uveden kao pokazivač na prazan objekt i naglašava njegovu razliku od nedefiniranog.

Da biste razlikovali između null i undefined u programu, možete koristiti operator identiteta === :

Tip podataka Simbol

Simbol je novi dodatak JavaScript-u od ECMAScript verzije 6. Simbol je jedinstvena, nepromjenjiva, primitivna vrijednost koja se koristi za kreiranje jedinstvenih identifikatora.

Da biste kreirali simbol morate pozvati funkciju Symbol:

var mySymbol = Simbol();

Da biste definirali simbol, možete koristiti typeof operator; ako je vrijednost simbol, bit će vraćen simbol niza:

Funkcija Symbol ima opcijski parametar - niz koji služi za opisivanje simbola:

Ime svojstva je string, tako da se može smatrati da objekti povezuju nizove sa vrijednostima. Zajedno, ove informacije formiraju parove ključ/vrijednost.

IN JavaScript objekti može se kreirati pomoću jedne od dvije sintakse:

1. var obj = (); // koristeći objektni literal 2. var obj = new Object(); // koristeći metodu zvanu konstruktor

Kreiranje objekta pomoću literala objekta počinje definiranjem regularne varijable. Desna strana ove izjave piše literal objekta - ovo je lista parova odvojenih zarezima zatvorena u vitičaste zagrade (). "ime-vrijednost", zatvorenih vitičastim zagradama. Ime svojstva i vrijednost odvojeni su dvotočkom:

var cat = ( "noge": 4, "ime": "Murzik", "boja": "Crveno" )

Drugi način za kreiranje objekata je korištenje Object() konstruktora. U ovom slučaju, prvo se koristi novi izraz Object(), a zatim se definiraju i inicijaliziraju svojstva rezultirajućeg objekta:

  • Kada jednu varijablu (čija vrijednost sadrži referencu na složenu vrijednost) dodijelimo drugoj varijabli, referenca na složenu vrijednost se kopira. Kao rezultat, obje varijable se odnose na istu složenu vrijednost, a promjene u vrijednosti jedne varijable će uticati na drugu varijablu.
  • Svaki izraz koji vraća 0, null, nedefiniran ili prazan niz tumači se kao false.
  • Nizovi se kreiraju pomoću dvostrukih (") ili jednostrukih (") navodnika. Niz omeđen parom jednostrukih navodnika može koristiti dvostruke navodnike, i obrnuto, jednostruki navodniki se mogu koristiti u nizu koji je zatvoren parom dvostrukih navodnika.
  • Vrijednost null je referenca na "prazan" objekat i ima posebnu svrhu - obično se koristi za inicijalizaciju varijable kojoj će se kasnije dodijeliti vrijednost.
  • Vrijednost (nedefinirana) je varijabla deklarirana pomoću operatora var, ali nije inicijalizirana.
  • U JavaScript-u objekti se mogu kreirati na jedan od dva načina:
    • koristeći literal objekta
    • koristeći metodu zvanu konstruktor
  • Objekt sadrži neuređenu kolekciju svojstava, od kojih svako sadrži ime i vrijednost. Objektu možete u bilo kojem trenutku dodati nove imenovane vrijednosti ili ukloniti postojeće.