Llojet e të dhënave. Variablat në JavaScript Specifikimi i llojit të një ndryshoreje javascript

24.08.2023

Janë gjithsej 6 në JavaScript llojet e të dhënave:
- Numri i numrit,
- Vargu i vargut,
— Lloji i të dhënave logjike (Boolean) boolean,
- Mungesa e vlerës së papërcaktuar,
- Boshllëk, asgjë nul,
- Objekti objekt.

Këto 6 lloje të dhënash ndahen në dy lloje, tipe të thjeshta të dhënash dhe lloje të të dhënave të përbëra (objekt).

Llojet e thjeshta (primitive) të të dhënave: numër, varg, boolean, i papërcaktuar, null.
Llojet e të dhënave të përbëra (objekt): Objekt

Llojet e të dhënave të përbëra janë: objekti, funksioni, grupi (shihni në fund të artikullit).

Para se të shikojmë çdo lloj të dhënash, le të njihemi fillimisht me llojin e operatorit. Ky operator ju lejon të zbuloni se çfarë lloji të të dhënave ka një variabël, kjo bëhet si kjo:

emri i variablit var; Emri i ndryshores = vlera; alarmi (lloji i emrit tëVariable);

Lloji i të dhënave: numri

Numri— numri i llojit të të dhënave. Numrat mund të jenë ose numër i plotë ose me pikë lundruese (numra thyesorë, realë, realë).

Var myNumber = 5; var myNumber2 = 5.5;

Në JavaScript, numrat me pikë lundruese përdorin pika, jo presje :)

Alert (lloji i numrit tim); alarmi (lloji i numrit tim 2);

Në të dyja rastet, skripti do të na japë një mesazh me numra.

Lloji i të dhënave: varg

Varg— vargu i tipit të të dhënave. Për ta kthyer vlerën e një variabli në një varg, ai duhet të rrethohet me thonjëza: "varg" i dyfishtë ose "varg" i vetëm. Nëse e rrethoni një numër me thonjëza, atëherë lloji i tij i të dhënave nga numri do të kthehet në varg:

Var myString = "Përshëndetje, unë jam një varg JavaScript"; var myString2 = "5";

Duke përdorur llojin e operatorit, ne kontrollojmë llojin e të dhënave të variablave tanë:

Alert (lloji myString); alarmi (lloji i myString2);

Në të dyja rastet, skripti do të na japë vargun e mesazhit.

Lloji i të dhënave: boolean

Boolean- një lloj i të dhënave logjike (Boolean), mund të ketë vetëm një nga dy vlerat: e vërtetë (e vërtetë) ose e rreme (false). Vlerat e vërtetë ose e gabuar zakonisht shfaqen në krahasim ose operacione logjike.

Var myBoolean = e vërtetë; var myBoolean2 = false;

Duke përdorur llojin e operatorit, ne kontrollojmë llojin e të dhënave të variablave tanë:

Alert (lloji i myBoolean); alarmi (lloji i myBoolean2);

Në të dyja rastet, skripti do të na japë një mesazh boolean.

Nëse një lloj i të dhënave Boolean është i mbyllur në thonjëza, lloji i të dhënave të tij do të ndryshojë nga boolean në varg.

Lloji i të dhënave: i papërcaktuar

E papërcaktuar— një lloj të dhënash që ka vetëm një vlerë, të papërcaktuar. Ky lloj i të dhënave shfaqet kur një variabël deklarohet por nuk inicializohet, d.m.th. kur një ndryshore (vetia e një objekti ose elementi vargu) nuk ka një vlerë.

// Deklaroi një variabël, por nuk i caktoi një vlerë var myUndefined; // Duke përdorur operatorin tipof, ne kontrollojmë llojin e të dhënave të alarmit tonë të ndryshores (lloji myUdefined);

Funksioni alarm () do të na japë mesazhin e papërcaktuar.

Nëse një variabli i caktohet vlera e papërcaktuar, atëherë lloji i të dhënave të saj do të jetë gjithashtu i padefinuar.

Var myUndefined2 = e papërcaktuar; alarmi (lloji i myUndefined2);

Nëse vlera e papërcaktuar është e mbyllur në thonjëza, lloji i të dhënave të saj do të ndryshojë nga e papërcaktuar në varg.

Lloji i të dhënave: objekt

Objekt— Lloji i të dhënave të objektit.

Var myObject; myObject = ( svoistvo: "znachenie", svoistvo2: "znachenie2", );

Duke përdorur llojin e operatorit, ne kontrollojmë llojin e të dhënave të objektit tonë:

Alert (lloji i objektit tim);

Skripti do të na japë objektin e mesazhit. Gjithashtu, operatori tipof do të tregojë objektin për vargje dhe funksione (shih më poshtë).

Lloji i të dhënave: null

I pavlefshëmështë një lloj i veçantë i të dhënave që tregon zbrazëti (asgjë). Null është një objekt i veçantë bosh. Për shembull, null mund të shfaqet kur klikoni butonin anuloj kur përdorni një funksion prompt ().

Var myNull = null; alarmi (lloji i myNull);

Ky skript do të shfaqë objektin e mesazhit, lexoni më poshtë pse ndodh kjo.

Nëse null është i rrethuar me thonjëza, lloji i të dhënave të tij do të ndryshojë nga null në varg.

Sqarim për punën me llojin e operatorit

Këtu do t'ju tregoj për disa gracka që ekzistojnë në llojin e operatorit, për shembull, kur punoni me null dhe me funksione, ai prodhon llojin e gabuar të të dhënave, gjë që shpesh ngatërron fillestarët. Më poshtë kam bërë një tabelë të vogël që tregon se si funksionon.

Variablat në JavaScript deklarohen duke përdorur një fjalë kyçe var, Për shembull:

Pas kësaj, mund të vendosni vlerën e ndryshores:

x = “Starg mostër”;

JavaScript ju lejon të krijoni variabla në fluturim pa i deklaruar ato, për shembull:

y = “Vargu i dytë”;

Kjo do të krijojë variablin y dhe do të ndajë hapësirë ​​​​memorie për të, por kjo praktikë e bën skriptin të vështirë për t'u lexuar dhe korrigjuar.

Në gjuhë Variablat JavaScript nuk kanë një lloj rreptësisht të caktuar; lloji i një variabli përcaktohet nga të dhënat që ruan. Për shembull, ju mundeni
manifestoni një ndryshore dhe caktoni një numër në të, dhe më pas caktoni një varg.

JavaScript mbështet pesë lloje bazë të të dhënave: Numri- numrat; Varg– linjat; Boolean– Lloji Boolean; E papërcaktuar– e pasigurt; I pavlefshëm- bosh. Këto pesë lloje të dhënash quhen bazë sepse... në bazë të tyre ndërtohen lloje të dhënash më komplekse. Me interes aktual nga perspektiva e ruajtjes së të dhënave janë tre: numrat, vargjet dhe booleans, dhe llojet null dhe void janë me interes në situata të caktuara.

Numrat

Në JavaScript, lloji i të dhënave numerike përfshin numra të plotë dhe numra realë. Numrat e plotë mund të marrin vlera nga –2 53 përpara 2 53 , ato reale mund të marrin vlera të mëdha brenda ±1,7976 x 10308 ose të jetë i saktë brenda ±2,2250 x 10 -308 .

Numrat mund të shkruhen edhe në formë eksponenciale.

Për të regjistruar të gjithë numër heksadecimal në fillim vendoset një zero, pastaj një shkronjë x, pastaj vetë numri, i cili mund të përmbajë numra nga 0 përpara 9 dhe letra nga A përpara F.

Numrat në sistemi heksadecimal Numrat mund të jenë të dobishëm kur përdorni operacione bit, dhe gjithashtu për ruajtjen e ngjyrave - për Web, të gjitha ngjyrat ruhen në heksadecimal.

JavaScript gjithashtu ka aftësinë për të shkruar numra në sistemin e numrave oktal: për të shkruar numrin në fillim, vendosni 0 , pastaj vijnë numrat nga 0 përpara 7 .

Numra të veçantë

Nëse rezultati i një operacioni matematikor është jashtë kufijve të pranueshëm, ndryshorja merr vlerën Pafundësi- pafundësi. Kur kryeni ndonjë operacion në një numër të tillë, rezultati do të jetë pafundësi. Kur krahasojmë, pafundësia pozitive është gjithmonë më e madhe se çdo numër real, dhe anasjelltas, pafundësia negative është gjithmonë më e vogël se çdo numër real.

Një tjetër kuptim i veçantë i rëndësishëm është NaN- "jo një numër". Një shembull tipik operacion që kthehet NaN, pjesëtohet me zero. Për të përcaktuar nëse një vlerë është një ndryshore NaN, përdoret funksioni isNaN(), e cila kthehet e vërtetë, nëse numri është real (duke përfshirë pafundësinë), dhe i rremë, nëse vlera e ndryshores NaN.

Numrat specialë i referohen vlerave maksimale dhe minimale që mund të marrë një variabël. Të gjithë numrat e veçantë janë paraqitur në tabelë:

Vargjet

Një varg është një sekuencë karakteresh të kufizuara me thonjëza të dyfishta ose të vetme.

Pasi të krijohet një varg, ai ka një veti − gjatësia, duke kthyer gjatësinë e vargut, dhe nje numer i madh i metodat:

charAt(indeks: Number) : String – kthen karakterin e vendosur në një pozicion të caktuar;

koncat([vargu 1:String[, [, varguN: String]]]]) : String – bashkon vargjet (ngjashëm me operatorin “+”);

Indeksi i(nënvarg:String[, indeksi i fillimit: Number]) : Number – kthen numrin e shfaqjeve të nënvargut në varg; një parametër opsional është numri i karakterit nga i cili fillon kërkimi. Nëse nënvargu nuk gjendet, kthehet -1 . Kërkimi kryhet nga e majta në të djathtë; për kërkimin nga e djathta në të majtë, përdoret metoda lastIndexOf(), e cila ka një sintaksë të ngjashme;

zëvendësojnë(rgExp: RegExp, zëvendëso tekstin: String) : String – zëvendëson një shprehje të rregullt me ​​një varg;

ndarë([ ndarës: (String | RegExp) [, limit: Number]]) : Array – ndan një varg në një varg nënvargjesh. Parametri i parë është ndarësi në bazë të të cilit kryhet ndarja; nëse ndarësi nuk specifikohet, kthehet një grup që përmban një element me vargun origjinal. Parametri i dytë specifikon numrin maksimal të elementeve në grupin e kthyer;

nënstr(filloni:Numri [, gjatësia: Number]) : String – kthen një nënvarg që fillon në një pozicion të caktuar dhe ka një gjatësi të caktuar;

nënvarg(filloni: Numri, fund: Number) : String – Kthen një nënvarg që fillon dhe mbaron në pozicionet e specifikuara nga parametrat.

Lloji Boolean

Variablat Boolean mund të marrin një nga dy vlerat: e vërtetë- e vërteta; i rremë- gënjeshtër. Variablat Boolean shpesh përdoren në një deklaratë të kushtëzuar nëse. Shembull:

var doAlert = e vërtetë;

if (doAlert) ( alarm ("Përshëndetje, botë!"); )

Variabla të tipit Undefined dhe Null

Lloji E papërcaktuar përdoret për variabla joekzistente ose variabla vlerat e të cilave nuk janë përcaktuar ende. Në shembullin e mëposhtëm, ndryshorja x do të ketë rëndësi E papërcaktuar- pra nuk është përcaktuar.

Lloji I pavlefshëm do të thotë vlerë boshe. Një shembull i deklarimit të një ndryshoreje boshe:

Vargjeve

Në JavaScript, një grup është një koleksion i renditur i të dhënave të ndryshme. Të gjithë elementët e grupit janë të numëruar, elementi i parë i grupit ka një indeks zero. Një element specifik i grupit arrihet duke përdorur kllapa katrore dhe numrin e atij elementi. Shembull:

myArr = “Përshëndetje!”;

Deklarimi i një grupi bosh dhe një grupi që përmban të dhëna:

var boshArr = ;

var filledArr = ["Përshëndetje", "Botë"];

Vargjet mund të jenë shumëdimensionale. Njoftim dhe apel për grup shumëdimensional duket kështu:

var myArr = [,,];

//Krijohet një grup me madhësi 3x2 dhe shfaqet elementi që përmban
në rreshtin e tretë, në kolonën e dytë, e barabartë me 6.

Meqenëse një grup është në thelb një objekt, ai mund të deklarohet si më poshtë.

Në këtë tutorial do të prezantojmë një koncept shumë të rëndësishëm - llojet e të dhënave JavaScript. Ne ju rekomandojmë që ta konsideroni me kujdes këtë koncept– nëse nuk e kuptoni që në fillim, atëherë shpesh do t'ju duhet të përballeni me sjellje të çuditshme të programit që keni krijuar.

Shtypja dinamike

Në vazhdim programet kompjuterike manipuloni vlera të ndryshme, secila prej të cilave mund të përpunohet në një gjuhë programimi dhe i përket një lloji specifik të të dhënave.

Llojet JavaScript Të dhënat mund të ndahen në dy kategori: lloje të thjeshta (të quajtura edhe primitive) dhe të përbëra (të quajtura gjithashtu referencë ose objekt).

JavaScript është një gjuhë programimi e shtypur dobët ose dinamike që lejon që llojet e të dhënave të përcaktohen, analizohen dhe kompilohen menjëherë gjatë ekzekutimit të programit. Kjo do të thotë që ju nuk keni nevojë të përcaktoni llojin e ndryshores paraprakisht. Lloji do të përcaktohet automatikisht gjatë ekzekutimit të programit.
Kështu, në pjesë të ndryshme të programit, e njëjta ndryshore mund të marrë vlera të llojeve të ndryshme:

Llojet e të dhënave

Standardi ECMAScript® përcakton llojet e mëposhtme të të dhënave:

  • E thjeshtë(ato quhen edhe primitive) lloje:
    • Boolean - mund të marrë dy vlera të mundshme, ndonjëherë të quajtura true dhe false;
    • null – vlera null përfaqëson një referencë që tregon, zakonisht qëllimisht, në një objekt ose adresë joekzistente ose të pasaktë;
    • i padefinuar – tregon një variabël globale të paracaktuar të inicializuar me një vlerë të papërcaktuar;
    • numerike (numri anglisht) - lloji numerik të dhëna në formatin e pikës lundruese me precizion të dyfishtë 64-bit;
    • varg (anglisht String) – është një sekuencë karakteresh që përdoren për të përfaqësuar tekstin;
    • simboli (eng. Symbol) është një lloj i të dhënave, shembujt e të cilit janë unike dhe të pandryshueshme. (i ri në ECMAScript 6).
  • Objekt(Anglisht Object) është një koleksion vlerash të emërtuara, të cilat zakonisht quhen veti (veti) të një objekti.

Dallimi midis llojeve primitive dhe të përbëra

Para se të shikojmë çdo lloj të dhënash, le të njihemi fillimisht me llojin e operatorit. Operatori typeof kthen një varg që përshkruan llojin e të dhënave të një ndryshoreje.
Le të demonstrojmë se si funksionon duke përdorur shembullin e mëposhtëm:

Skripti i shembullit deklaron variablat, i inicializon ato (cakton vlera) dhe më pas printon llojin e secilës variabël.

Dallimi midis llojeve të të dhënave primitive dhe të përbëra ndodh kur kopjohen vlerat e tyre.

Kur një variabli i caktohet një vlerë e një lloji të thjeshtë, vetë vlera (për shembull, një numër) i shkruhet ndryshores. Kur ne caktoni një variabël të tipit të thjeshtë tek tjetra, ajo vlera e kopjeve. Si rezultat, çdo variabël do të ketë kuptimin e saj dhe ndryshimet në një nga variablat nuk ka efekt mbi vlerën e një ndryshoreje tjetër:

Kur një ndryshore caktoni vlerën e përbërjes lloji (referenca), pastaj shkruhet ndryshorja lidhje për të vlerësuar ( referencë objekti). Kur caktojmë një variabël (vlera e së cilës përmban një referencë për një vlerë të përbërë) një ndryshoreje tjetër, ajo që ndodh është kopjoni lidhjen në një vlerë të përbërë. Si rezultat të dy variablat i referohen të njëjtës vlerë të përbërë dhe ndryshimet në vlerën e njërit prej variablave do të ketë ndikim në një variabël tjetër:

Llojet primitive

Të gjitha llojet e të dhënave në JavaScript, përveç objekteve, janë të pandryshueshme ose të pandryshueshme. Kjo do të thotë që vlerat e tyre nuk mund të modifikohen, por vetëm të mbishkruhen me një vlerë të re, të ndryshme. Për shembull, vargjet nuk mund të rregullohen karakter për karakter - ato mund të rishkruhen vetëm plotësisht. Vlerat e llojeve të tilla quhen "primitive".

Të dhënat më të thjeshta me të cilat mund të funksionojë një program quhen literale. Literalet janë numra ose vargje që përdoren për të përfaqësuar vlerat në JavaScript. Informacioni i dhënë mund të jetë shumë i larmishëm, dhe për këtë arsye kuptimet ndryshojnë lloje të ndryshme. Llojet më të thjeshta të të dhënave në JavaScript quhen tipe bazë të të dhënave: numra, vargje dhe booleans. Të gjithë ata klasifikohen si "primitivë".

Lloji logjik (logjik) "boolean"

Vlerat logjike, ose Boolean (sipas emrit të shpikësit të tyre - Boolean), mund të kenë vetëm një nga dy vlerat: e vërtetë (e vërtetë) ose e rreme (false). Vlerat e vërtetë ose e gabuar zakonisht shfaqen në krahasim ose operacione logjike.

Programi i mëposhtëm krijon një variabël Boolean dhe më pas teston vlerën e saj duke përdorur një deklaratë if/else:

Çdo shprehje mund të përdoret si shprehje krahasuese. Çdo shprehje që kthen 0, null, të papërcaktuar ose vargun bosh interpretohet si false. Një shprehje që specifikon çdo vlerë tjetër interpretohet si e vërtetë.

Shënim: Kur shkruani vlerat Boolean, ato nuk mbyllen në thonjëza: var myVar = true;
Në të njëjtën kohë, deklarimi i var myVar = "true" krijon një variabël vargu.

Lloji i të dhënave të numrit

Në JavaScript, nuk ka dallim midis një numri të plotë dhe një numri me pikë lundruese - në thelb, JavaScript përfaqëson të gjithë numrat si një vlerë me pikë lundruese.

JavaScript përdor një format 64-bit të përcaktuar nga standardi IEEE-754 për të përfaqësuar numrat. Ky format është në gjendje të përfaqësojë numra në intervalin ±1,7976931348623157 × 10308 deri në ±5 × 10 -324.

Një numër që gjendet drejtpërdrejt në kodin e programit quhet literal numerik. Përveç fjalëve të plota dhjetore, JavaScript njeh vlera heksadecimal.
Numrat heksadecimal mund të përfshijnë çdo sekuencë numrash nga 0 në 9 dhe shkronja nga a në f, të cilat duhet të fillojnë me sekuencën e karaktereve "0x".

Var a = 255; var b = 0xFF; // Numri 255 në shënimin heksadecimal

Për më tepër, JavaScript përmban vlera të veçanta numerike:

  • NaN (jo një numër ose gabim në llogaritje). Është rezultat i një operacioni të pasaktë matematikor mbi të dhëna të pavlefshme, të tilla si vargje ose një vlerë të pacaktuar.
  • Pafundësi (pafundësi pozitive). Përdoret nëse numër pozitivështë shumë i madh për t'u përfaqësuar në JavaScript.
  • -Pafundësi (pafundësi negative). Përdoret kur një numër negativ është shumë i madh për t'u përfaqësuar në JavaScript.
  • ±0 (pozitive dhe negative 0). JavaScript bën dallimin midis zeros pozitive dhe negative.

Lloji i të dhënave të vargut

Një lloj vargu është një sekuencë e pandryshueshme, e renditur e vlerave 16-bit, secila prej të cilave përfaqëson Karakteri Unicode(shkronja, numra, shenja pikësimi, Simbole të veçanta dhe hapësirat). Rreshtat mund të jenë bosh ose të përbëhen nga një ose më shumë karaktere. Vargjet krijohen duke përdorur thonjëza të dyfishta (") ose të vetme ("). Një varg i kufizuar nga një palë thonjëza të vetme mund të përdor thonjëza të dyfishta dhe anasjelltas, thonjëza të vetme mund të përdoren brenda një vargu të mbyllur nga një palë thonjëza të dyfishta:

Në JavaScript, nuk ka dallim midis thonjëzave të dyfishta dhe të vetme, por thonjëzat në fillim dhe në fund të një vargu nuk duhet të jenë të ndryshme. Për shembull, një shprehje si kjo do të shkaktonte një gabim sintaksor:

var firstName = "Max"; // gabim sintaksor- citate të ndryshme

Shënim: JavaScript nuk ka një lloj të veçantë të dhënash me një karakter si char në C, C++ dhe Java. Një karakter i vetëm përfaqësohet nga një varg me gjatësi njësi.

Lloji i të dhënave null

Lloji null përmban një vlerë të vetme të veçantë - null.

Fjalë kyçe null nuk mund të përdoret si emër funksioni ose variabli. Vlera null është një referencë për një objekt "bosh" dhe ka një qëllim të veçantë - zakonisht përdoret për të inicializuar një ndryshore që më vonë do t'i caktohet një vlerë.

Operatori tipof për një vlerë null kthen vargun "objekt", duke treguar se vlera null është një objekt i veçantë "bosh".

Lloji i pacaktuar i të dhënave

Një lloj i papërcaktuar formon llojin e vet, i cili përmban një vlerë të vetme të veçantë - të papërcaktuar. Kjo është vlera e një ndryshoreje të deklaruar duke përdorur operatorin var, por e pa inicializuar:

Vlera e papërcaktuar kthehet kur aksesohet një ndryshore që nuk i është caktuar kurrë një vlerë, një veçori objekti joekzistent ose një element grupi.

Duhet të theksohet se një variabël me vlerë të papërcaktuar është i ndryshëm nga një ndryshore që nuk është fare e përcaktuar:

Në këtë shembull, metoda alert() shfaq vlerën e ndryshores moshe, e cila është e papërcaktuar. Në rastin e dytë, një ndryshore e padeklaruar e makinës i kalohet metodës alert(), e cila çon në një gabim.

Shembulli i mëposhtëm mund të jetë disi konfuz për programuesit fillestarë, sepse... Operatori tipof kthehet i papërcaktuar si për një variabël të pa inicializuar ashtu edhe për një variabël të padeklaruar:

Në shembullin e mësipërm, ndryshorja age është deklaruar, por asgjë nuk është shkruar në të, kështu që vlera e saj është thjesht e papërcaktuar. Variabli i makinës nuk është deklaruar - në fakt, ai nuk ekziston. Megjithatë, typeof e kthen vargun të papërcaktuar në të dyja rastet. Kjo ka kuptim, natyrisht, sepse është e pamundur të kryhet ndonjë operacion me ndonjë nga këto variabla, megjithëse teknikisht ato janë krejtësisht të ndryshme.

Shënim: Rekomandohet që gjithmonë të inicializoni një variabël të deklaruar. Në këtë rast, ju do të dini se operatori tipof kthehet i papërcaktuar sepse ndryshorja nuk është deklaruar, jo sepse nuk është inicializuar.

Vlera e papërcaktuar rrjedh nga null, kështu që në ECMA-262 operatori i ekuivalencës == i trajton ato si të barabarta:

Megjithëse null dhe të papërcaktuara janë të lidhura, ato përdoren ndryshe. Nuk duhet të caktohet në mënyrë eksplicite vlerë e ndryshueshme e papërcaktuar, por kjo kërkesë nuk zbatohet për null. Në rast se objekti i kërkuar nuk është i disponueshëm, në vend të kësaj duhet të përdoret null. Kjo tregon se null u prezantua si një tregues për një objekt bosh dhe thekson ndryshimin e tij nga i papërcaktuari.

Për të dalluar midis null dhe të papërcaktuar në një program, mund të përdorni operatorin e identitetit ===:

Lloji i të dhënave Simboli

Një simbol është një shtesë e re në JavaScript që nga versioni 6 i ECMAScript. Një simbol është një vlerë unike, e pandryshueshme, primitive që përdoret për të krijuar identifikues unikë.

Për të krijuar një simbol, duhet të telefononi funksionin Symbol:

var mySymbol = Symbol();

Për të përcaktuar një simbol, mund të përdorni operatorin tip; nëse vlera është një simbol, simboli i vargut do të kthehet:

Funksioni Symbol ka një parametër opsional - një varg që shërben për të përshkruar simbolin:

Emri i pronës është një varg, kështu që objektet mund të konsiderohen se lidhin vargjet me vlerat. Së bashku, këto pjesë informacioni formojnë çifte çelës-vlerë.

Objektet JavaScript mund të krijohet duke përdorur një nga dy sintaksat:

1. var obj = (); // duke përdorur objektin literal 2. var obj = objekt i ri(); // duke përdorur një metodë të quajtur konstruktor

Krijimi i një objekti duke përdorur një objekt fjalë për fjalë fillon me përcaktimin e një ndryshoreje të rregullt. Ana e djathtë e kësaj deklarate shkruan fjalë për fjalë një objekt - kjo është një listë e çifteve e ndarë me presje e mbyllur në kllapa kaçurrelë (). "emri-vlera", i mbyllur në mbajtëse kaçurrelë. Emri dhe vlera e pronës ndahen me dy pika:

var cat = ( "këmbët": 4, "emri": "Murzik", "ngjyra": "E kuqe")

Mënyra e dytë për të krijuar objekte është përdorimi i konstruktorit Object(). Në këtë rast, fillimisht përdoret shprehja e re Object(), dhe më pas përcaktohen dhe inicializohen vetitë e objektit që rezulton:

  • Kur caktojmë një variabël (vlera e së cilës përmban një referencë për një vlerë të përbërë) një ndryshoreje tjetër, referenca për vlerën e përbërë kopjohet. Si rezultat, të dy variablat i referohen të njëjtës vlerë të përbërë, dhe ndryshimet në vlerën e njërës ndryshore do të ndikojnë tek ndryshorja tjetër.
  • Çdo shprehje që kthen 0, null, të papërcaktuar ose vargun bosh interpretohet si false.
  • Vargjet krijohen duke përdorur thonjëza të dyfishta (") ose të vetme ("). Një varg i kufizuar nga një palë thonjëza të vetme mund të përdorë thonjëza të dyfishta dhe anasjelltas, thonjëza të vetme mund të përdoren në një varg të mbyllur nga një palë thonjëza të dyfishta.
  • Vlera null është një referencë për një objekt "bosh" dhe ka një qëllim të veçantë - zakonisht përdoret për të inicializuar një ndryshore që më vonë do t'i caktohet një vlerë.
  • Vlera (e papërcaktuar) është një ndryshore e deklaruar duke përdorur operatorin var, por e pa inicializuar.
  • Në JavaScript, objektet mund të krijohen në një nga dy mënyrat:
    • duke përdorur një objekt fjalë për fjalë
    • duke përdorur një metodë të quajtur konstruktor
  • Një objekt përmban një koleksion të parregulluar të vetive, secila prej të cilave përmban një emër dhe një vlerë. Mund të shtoni vlera të reja me emër në një objekt në çdo kohë ose të hiqni ato ekzistuese.
  • Në JavaScript, vlerat mund të konvertohen lirshëm (në mënyrë eksplicite dhe të nënkuptuar) nga një lloj në tjetrin. Për shembull, nëse një operator pret të marrë një vlerë lloj i caktuar, dhe një vlerë e një lloji tjetër i kalohet, përkthyesi do të përpiqet automatikisht të kryejë konvertime në llojin e dëshiruar:

    Console.log (10 + "makinat"); // "10 makina". Numri është konvertuar në mënyrë implicite në një konsolë string.log("7" * "4"); // 28. Të dy vargjet konvertohen në mënyrë implicite në numra

    Konvertimi i nënkuptuar- kjo është kur përkthyesi kryen automatikisht konvertimin e tipit, domethënë pa pjesëmarrjen e programuesit. Konvertimi i qartë- kjo është kur konvertimi kryhet nga vetë programuesi. Konvertimi eksplicit quhet gjithashtu derdhje e tipit:

    Console.log ("7" * "4"); // 28. Konsola e konvertimit të nënkuptuar.log(Numri("7") * Numri("4")); // 28. Shndërrim i qartë

    Tabela më poshtë përshkruan se si JavaScript konverton vlerat nga një lloj në tjetrin. Qelizat e zbrazëta korrespondojnë me situatat ku nuk kërkohet konvertim:

    Kuptimi Konverto në:
    Varg Numri Boolean Nje objekt
    të papërcaktuara
    i pavlefshëm
    "e pacaktuar"
    "i pavlefshëm"
    NaN
    0
    i rremë
    i rremë
    lloji i gabimitError
    lloji i gabimitError
    e vërtetë
    i rremë
    "e vertete"
    "i rremë"
    1
    0
    i ri Boolean (e vërtetë)
    i ri Boolean (false)
    "" (rresht bosh)
    "1.2"
    "një"
    "-10"
    "+10"
    "011"
    "0xff"
    0
    1.2
    NaN
    -10
    10
    11
    255
    i rremë
    e vërtetë
    e vërtetë
    e vërtetë
    e vërtetë
    e vërtetë
    e vërtetë
    varg i ri ("")
    varg i ri ("1.2")
    varg i ri ("një")
    varg i ri ("-10")
    varg i ri ("+10")
    vargu i ri ("011")
    varg i ri ("0xff")
    0
    -0
    NaN
    Pafundësi
    -Pafundësi
    3
    "0"
    "0"
    "NaN"
    "Pafundësi"
    "-Pafundësi"
    "3"
    i rremë
    i rremë
    i rremë
    e vërtetë
    e vërtetë
    e vërtetë
    numër i ri (0)
    numër i ri (-0)
    Numri i ri (NaN)
    numër i ri (Pafundësi)
    Numri i ri (-Infinity)
    Numri i ri (3)
    () (çdo objekt)

    (varg bosh)
    (1 element numerik)
    arr (çdo grup tjetër)
    funksion ()() (çdo funksion)

    shih Konvertimi i objekteve

    ""
    "9"
    shih Konvertimi i objekteve
    shih Konvertimi i objekteve

    shih Konvertimi i objekteve
    0
    9
    NaN
    NaN
    e vërtetë

    e vërtetë
    e vërtetë
    e vërtetë
    e vërtetë

    Për konvertimin e qartë në lloje të thjeshta, përdoren funksionet e mëposhtme: Boolean(), Number(), String(). Për konvertimin e nënkuptuar, përkthyesi përdor të njëjtat funksione që përdoren për konvertimin e qartë.

    Për konvertim të qartë, mund të përdorni operatorë në vend të funksioneve. Për shembull, nëse një nga operandët e operatorit + është një varg, atëherë operandi tjetër gjithashtu konvertohet në një varg. Operatori unary + e konverton operandin e tij në një numër. Operator unar! konverton operandin në një vlerë boolean dhe e përmbys atë. E gjithë kjo u bë arsyeja për shfaqjen e metodave unike të mëposhtme të konvertimit të tipit që mund të gjenden në praktikë:

    X + "" // Njësoj si vargu (x) +x // Njësoj si numri (x). Ju gjithashtu mund të shihni x - 0 !!x // Njësoj si Boolean(x)

    Konvertoni në numra

    Funksioni Number() konverton vlerat sipas rregullave të mëposhtme:

    • Vlerat boolean "true" dhe "false" konvertohen përkatësisht në 1 dhe 0.
    • Numrat kthehen të pandryshuar.
    • Vlera null konvertohet në 0.
    • Vlera e papërcaktuar konvertohet në NaN.

    Ekzistojnë rregulla të veçanta për vargjet:

    • Nëse një varg përmban vetëm shifra me një shenjë kryesore + ose -, ose pa shenjë, ai gjithmonë konvertohet në një numër dhjetor të plotë. Zerot kryesore nuk merren parasysh, për shembull "0011" konvertohet në 11.
    • Nëse vargu është një numër me pikë lundruese me një shenjë kryesore + ose - ose të panënshkruar, ai konvertohet në numrin përkatës me pikë lundruese (zerot kryesore gjithashtu injorohen).
    • Nëse vargu është një numër heksadecimal, ai konvertohet në numrin e plotë dhjetor përkatës.
    • Nëse vargu është bosh, ai konvertohet në 0.
    • Nëse vargu përmban diçka të ndryshme nga opsionet e mëparshme, ai konvertohet në NaN.
    • Metoda valueOf() thirret në objekte dhe vlera që kthen konvertohet automatikisht sipas rregullave të mëparshme. Nëse ky konvertim rezulton në NaN, thirret metoda toString() dhe zbatohen rregullat për konvertimin e vargjeve në numra.

    Operatorët unarë + dhe - ndjekin të njëjtat rregulla si funksioni Number().

    Konvertimi në vlerat Boolean

    Funksioni Boolean() konverton një vlerë në ekuivalentin e tij Boolean:

    • Vlerat e mëposhtme janë konvertuar në false: e papërcaktuar , null , 0 , -0 , NaN , "" .
    • False kthehet e pandryshuar.
    • Të gjitha vlerat e tjera konvertohen në të vërteta.

    Konverto në vargje

    Funksioni String() konverton vlerat sipas rregullave të mëposhtme:

    • Për të gjitha vlerat përveç null dhe të papërcaktuara, metoda toString() thirret automatikisht dhe kthehet një paraqitje e vargut të vlerës.
    • Për null, vargu "null" kthehet.
    • Për vlerën e papërcaktuar, kthehet vargu "i padefinuar".

    Shndërrimi i llojeve të thjeshta në objekte

    Për të kthyer vlerat e thjeshta në objekte, përdoren konstruktorët Boolean() , Number() , String():

    Var oNum = Numri i ri (3); var oStr = varg i ri ("1.2"); var oBool = i ri Boolean (e vërtetë); alarmi (lloji oNum); // alarmi "objekt" (lloji oStr); // alarm "objekt" (lloji oBool); // "Objekt"

    Shndërrimi i objekteve në vlera të thjeshta

    Të gjithë objektet trashëgojnë dy metoda konvertimi: toString() dhe valueOf().

    Metoda toString() kthen paraqitjen e vargut të objektit. Si parazgjedhje nuk kthen asgjë interesante:

    Alert((x: 1).toString()); // ""

    Disa lloje kanë versione më të specializuara të metodës toString(). Për shembull, metoda toString() në një grup i konverton të gjithë elementët e tij në vargje dhe më pas i bashkon ato në një varg, duke futur presje midis tyre:

    Alert(.toString()); // "1,2,3"

    Qëllimi i metodës valueOf() është më pak i përcaktuar qartë: supozohet të konvertojë një objekt në vlerën e thjeshtë që e përfaqëson atë, nëse ekziston një vlerë e tillë. Objektet janë në thelb vlera të përbëra dhe shumica e objekteve nuk mund të përfaqësohen si një vlerë e vetme e thjeshtë, kështu që si parazgjedhje metoda valueOf() kthen një referencë për të dhe jo një vlerë të thjeshtë:

    Alert(lloji (x:2).valueOf()); // "Objekt"

    Kur konverton një objekt në një varg, interpretuesi JavaScript bën sa më poshtë:

    • Nëse objekti ka një metodë toString(), interpretuesi e thërret atë. Nëse kthen një vlerë të thjeshtë, interpretuesi e konverton vlerën në një varg (nëse nuk është varg) dhe kthen rezultatin e konvertimit.
    • Nëse objekti nuk ka një metodë toString() ose metoda nuk kthen një vlerë të thjeshtë, atëherë interpretuesi kontrollon praninë e një metode valueOf(). Nëse kjo metodë është e përcaktuar, interpretuesi e thërret atë. Nëse kthen një vlerë të thjeshtë, interpretuesi e konverton atë vlerë në një varg (nëse nuk është varg) dhe kthen rezultatin e konvertimit.

    Kur konverton një objekt në një numër, interpretuesi bën të njëjtën gjë, por së pari provon metodën valueOf():

    • Nëse një objekt ka një metodë valueOf() që kthen një vlerë të thjeshtë, interpretuesi e konverton (nëse është e nevojshme) atë vlerë në një numër dhe kthen rezultatin.
    • Nëse objekti nuk ka një metodë valueOf() ose metoda nuk kthen një vlerë të thjeshtë, atëherë interpretuesi kontrollon praninë e një metode toString(). Nëse objekti ka një metodë toString() që kthen një vlerë të thjeshtë, interpretuesi kryen konvertimin dhe kthen vlerën që rezulton.
    • Përndryshe, interpretuesi arrin në përfundimin se as toString() dhe as valueOf() nuk mund të marrin një vlerë të thjeshtë dhe ngre një TypeError.

    Metodat toString() dhe valueOf() lexohen/shkruhen, kështu që ju mund t'i anashkaloni ato dhe të specifikoni në mënyrë eksplicite se çfarë do të kthehet gjatë konvertimit:

    Var obj = (); obj.toString = funksion() ( kthen "objektin"; ); alert("Kjo është " + obj); // "Ky është një objekt"

    JavaScript ose JS(shkurtuar) nuk është një gjuhë e lehtë dhe zhvilluesit fillestarë nuk do të mësojnë për të menjëherë. Në fillim ata mësojnë bazat dhe çdo gjë duket e gjallë dhe e bukur. Duke shkuar pak më thellë, shfaqen vargje JavaScript, objekte, kthime të thirrjeve dhe gjithçka si kjo, gjë që shpesh ju merr mendjen.

    Në JavaScript, është e rëndësishme të kontrolloni siç duhet llojin e një ndryshoreje. Le të themi se dëshironi të dini nëse një variabël është një grup apo një objekt? Si ta kontrolloni këtë saktë? Në këtë rast të veçantë, ka truke gjatë verifikimit dhe ky postim do të jetë rreth tyre. Le të fillojmë menjëherë.

    Kontrollimi i llojit të një ndryshoreje

    Për shembull, duhet të kontrolloni nëse një ndryshore është një objekt, një grup, një varg ose një numër. Ju mund të përdorni typeof për këtë, por jo gjithmonë do të tregojë të vërtetën dhe në shembullin më poshtë do të tregoj pse.

    E shkrova këtë shembull për të treguar qartë pse typeof nuk është gjithmonë zgjedhja e duhur.

    Var _krahasim = ( varg: "string", int: 99, float: 13.555, objekt: (përshëndetje: "përshëndetje"), varg: grup i ri (1, 2, 3) ); // Kthen një grup me çelësat e objektit var _objKeys = Object.keys(_krahasimi); për (var i = 0; i<= _objKeys.length - 1; i++) { // выведем в консоль тип каждой переменной console.log(typeof _comparson[_objKeys[i]]); }

    Rezultati i ekzekutimit të kodit:

    Numri i vargut numri objekt objekti

    E drejtë? - Sigurisht që jo. Ka dy probleme. Secila prej tyre do të përshkruhet në detaje dhe do të propozohet një zgjidhje.

    Problemi i parë: numri float, prodhimi si numër

    Comparison.float nuk është një numër dhe numri duhet të jetë një float (numri me pikë lundruese). Për ta rregulluar këtë, mund të krijoni një funksion me një kontroll si në kodin më poshtë.

    Var_floatNumber = 9,22; var _notFloatNumber = 9; console.log(isFloat(_floatNumber)); console.log(isFloat(_notFloatNumber)); console.log(isFloat("")); funksioni ështëFloat(n)( kthen Numri(n) === n && n % 1 !== 0; )

    Funksioni isFloat() kontrollon që të gjitha vlerat janë me pikë lundruese. Së pari, kontrollohet nëse ndryshorja është e barabartë me n numri (numri (n) === n) dhe nëse po, atëherë bëhet një kontroll tjetër për pjesëtimin me mbetje dhe nëse ka mbetje, atëherë një boolean ( e vërtetë ose i rremë) rezultat (n % 1 !== 0).

    Në shembullin e mësipërm ai kthehet e vërtetë, i rremë Dhe i rremë. Kuptimi i parë është noton shkruani, i dyti nuk është - është një numër i rregullt dhe i fundit është thjesht një varg bosh që nuk i përshtatet rregullave.

    Problemi i dytë: grupi u përcaktua si një objekt

    Në shembullin e parë, grupi u shfaq si një objekt dhe kjo nuk është shumë e mirë, pasi ndonjëherë ju duhet të përdorni pikërisht këtë lloj dhe asgjë tjetër.

    Ka disa mënyra për të kontrolluar nëse një variabël është një lloj vargu.

    Opsioni i parë (opsion i mirë). Ne kontrollojmë nëse të dhënat i përkasin një grupi duke përdorur instanceof().

    Var data = grup i ri ("përshëndetje", "botë"); var isArr = shembulli i të dhënave të Array;

    Opsioni i dytë (opsion i mirë). Metoda Array.isArray() kthen një vlerë boolean që do të varet nga fakti nëse ndryshorja është një grup apo jo ().

    Var data = grup i ri ("përshëndetje", "botë"); var isArr = Array.isArray(të dhëna);

    Opsioni i tretë (më i miri, por i gjatë). Për lehtësi, mund ta bëni këtë metodë një funksion. Duke përdorur Object ne bëjmë . Nëse rezultati i Object.prototype.toString.call(data) nuk është i barabartë, atëherë ndryshorja nuk është një grup ().

    Var data = grup i ri ("përshëndetje", "botë"); var isArr = Object.prototype.toString.call(data) == ""; console.log(isArr);

    Rezultati i fundit në formën e një funksioni komoditeti:

    Funksioni isArray(data) (ktheje Object.prototype.toString.call(data) == "" )

    Tani mund të thërrisni funksionet isArray() dhe të vendosni një grup ose diçka tjetër si argument dhe të shihni rezultatin.

    Pasthënie

    Regjistrimi doli të ishte mjaft i madh se sa ishte menduar fillimisht. Por unë jam i kënaqur me të, sepse në mënyrë mjaft të përmbledhur dhe të qartë përshkruan vështirësitë kur kontrolloni variablat në JavaScript dhe si t'i shmangni ato.

    Nëse keni ende ndonjë pyetje, shkruajini ato më poshtë në këtë hyrje. Unë do të jem i lumtur të ndihmoj.