ECMAScript alkuperäiset tyypit
- Edellinen sivu ECMAScript arvot
- Seuraava sivu ECMAScript tyyppimuunnokset
ECMAScriptillä on viisi alkuperäistä tyyppiä (primitive type), nimittäin Undefined, Null, Boolean, Number ja String.
typeof-laskin
typeof-laskimella on parametri, jona tarkistettava muuttuja tai arvo. Esimerkiksi:
var sTemp = "test string"; alert (typeof sTemp); // Tulostaa "string" alert (typeof 86); // Tulostaa "number"
Muuttujan tai arvon typeof-laskimen kutsuminen palauttaa seuraavista arvoista yhden:
- undefined - Jos muuttuja on Undefined-laji
- boolean - Jos muuttuja on Boolean-laji
- number - Jos muuttuja on Number-laji
- string - Jos muuttuja on String-laji
- object - Jos muuttuja on viittauslaji tai Null-laji
Huomautus:Saattaa olla, että kysyt, miksi typeof-laskin palauttaa "Object"-arvon null-arvolle. Tämä on itse asiassa virhe, joka oli mukana JavaScriptin alkuperäisessä toteutuksessa, ja joka on jatkettu ECMAScriptissä. Nykyään null pidetään objektin paikannusmerkinä, mikä selittää tämän ristiriidan, mutta teknisesti se on edelleen alkuperäinen arvo.
Undefined-tyyppi
Kuten edellä mainittiin, Undefined-tyyppiellä on vain yksi arvo, nimittäin undefined. Kun määritetty muuttuja ei ole alustettu, sen oletusarvo on undefined.
var oTemp;
Edellä oleva rivi määrittelee muuttujan oTemp ilman alkuperäistä arvoa. Tämä muuttuja annetaan arvo undefined, joka on undefined-tyypin literaali. Voit käyttää seuraavaa koodia testataksesi, onko muuttujan arvo undefined:
var oTemp; alert(oTemp == undefined);
Tämä koodi näyttää "true", mikä osoittaa, että nämä kaksi arvoa ovat todella yhtä suuret. Voit myös käyttää typeof-laskinta näyttääksesi, että muuttujan arvo on undefined:
var oTemp; alert(typeof oTemp); // Tulostaa "undefined"
Huomioitavaa:Arvo undefined ei ole sama kuin määrittelemätön arvo. Kuitenkin typeof-laskin ei todella erota näitä arvoja toisistaan. Katso seuraava koodi:
var oTemp; alert(typeof oTemp); // Tulostaa "undefined" alert(typeof oTemp2); // Tulostaa "undefined"
Edellä oleva koodi tulostaa molemmille muuttujille "undefined", vaikka vain muuttuja oTemp2 ei ollut määritelty. Jos käytetään muuta operaattoria kuin typeof, voi syntyä virhe, koska muut operaattorit voidaan käyttää vain määriteltyihin muuttujiin.
Esimerkiksi seuraava koodi aiheuttaa virheen:
var oTemp; alert(oTemp2 == undefined);
Kun funktio ei palauta mitään selkeää arvoa, palautettavaksi annetaan myös arvo "undefined", kuten seuraavassa esimerkissä näkyy:
function testFunc() { {} alert(testFunc() == undefined); // Tulostaa "true"
Null-tyyppi
Toinen tyyppi, jolla on vain yksi arvo, on Null, jolla on vain yksi erityinen arvo null, eli sen literaali. Arvo undefined on itse asiassa johdettu arvosta null, joten ECMAScript määrittelee ne yhtä suureiksi.
alert(null == undefined); // Tulostaa "true"
Vaikka nämä kaksi arvoa ovat yhtä suuria, niiden merkitys on erilainen. undefined on arvo, joka annetaan muuttujalle, jota ei ole alustettu, null taas käytetään ilmaisemaan vielä olematonta objektia (tämä on yksinkertaisesti esitelty typeof-laskinnassa). Jos funktio tai metodi on palauttanut objektin, mutta objektia ei löydy, palautettavaksi käytetään yleensä null-arvoa.
Boolean-tyyppi
Boolean-tyyppi on ECMAScript-kielen yleisimmin käytetyistä tyypeistä. sillä on kaksi arvoa true ja false (eli kaksi Boolean-literaalia).
Vaikka false ei ole yhtä kuin 0, 0 voidaan tarvittaessa muuntaa falseksi, joten molemmat ovat turvallisia käyttää Boolean-lauseissa.
var bFound = true; var bLost = false;
Number-tyyppi
ECMA-262:ssa määritetty erityisimpiä tyyppisiä on Number-tyyppi. Tämä tyyppi voi edustaa 32-bittisiä kokonaislukuja sekä 64-bittisiä liukulukuja.
Kaikki suoraan syötetyn (ei toisen muuttujan kautta haettu) numerot katsotaan Number-tyyppisiksi ilmaisuihin. Esimerkiksi seuraava koodi määrittää muuttujan, joka sisältää kokonaislukuarvon, ja sen arvo määritetään ilmaisulla 86:
var iNum = 86;
Oktaaliluku ja heksadesimaaliluku
Kokonaisluvut voidaan myös ilmaista oktaalina (kantana 8) tai heksadesimaalina (kantana 16). Oktaaliluvun ensimmäinen numero on oltava 0, ja sen jälkeen minkä tahansa oktaaliluvun (0-7) voi olla, kuten seuraavassa koodissa näkyy:
var iNum = 070; //070 on yhtä kuin kymmenluku 56
Luoaksesi heksadesimaalisen ilmion, ensimmäinen numero on oltava 0, ja sitten kirjain x, ja sitten minkä tahansa heksadesimaalisen numeron (0-9 ja A-F). Nämä kirjaimet voivat olla sekä isokirjaimisia että pienikirjaimisia. Esimerkiksi:
var iNum = 0x1f; //0x1f on yhtä kuin kymmenluku 31 var iNum = 0xAB; //0xAB on yhtä kuin kymmenluku 171
Huomioitavaa:Vaikka kaikki kokonaisluvut voidaan ilmaista oktaalina tai heksadesimaalina, kaikki laskutoimitusten tulokset ovat kymmenlukuja.
Liukuluku
Määrittääksesi liukulukuarvon, sinun on sisällytettävä desimaalipiste ja yksi desimaalinen numero (esimerkiksi 1.0 eikä 1). Tämä katsotaan liukulukuilmallisena. Esimerkiksi:
var fNum = 5.0;
Mielenkiintoista on, että ennen kuin tieteellinen merkintä käytetään laskelmiin, oikeasti tallennettu arvo on merkkijono.
Tieteellinen merkintä
Erittäin suurten tai erittäin pienten lukujen ilmoittamiseen voidaan käyttää tieteellistä merkintää. Luku voidaan ilmaista numerona (mukaan lukien desimaalinen numero) e (tai E) jälkeen, ja sitten kertaa 10 potenssina. Esimerkiksi:
var fNum = 5.618e7
Tämä merkki edustaa lukua 56180000. Tieteellisen merkinnän muuntaminen laskelmaformuuliin antaa tämän arvon: 5.618 x 107。
Myös erittäin pieniä lukuja voidaan ilmaista tieteellisessä merkinnässä, esimerkiksi 0.00000000000000008 voidaan ilmaista 8-e17(Tässä, 10 nousee -17:een potenssiin, mikä tarkoittaa, että sitä täytyy jakaa 10:llä 17 kertaa). ECMAScript muuntaa oletusarvoisesti tieteelliseen muotoon kaikki liukuluvut, joissa on 6 tai useampia johtavia nollia.
Huomioitavaa:Käytetään myös 64-bittistä IEEE 754-muotoa tallentaakseen liukulukuja, mikä tarkoittaa, että desimaaliarvoilla voi olla enintään 17 desimaalipuolta. Arvot, jotka ovat 17 desimaalipuolta pidempiä, leikataan pois, mikä aiheuttaa joitakin pieniä matemaattisia virheitä.
Erikoiset Number-arvot
Muutamia erikoisarvoja määritellään myös Number-tyypille. Eroottiset ovat Number.MAX_VALUE ja Number.MIN_VALUE, jotka määrittelevät Number-arvojen joukon ulkorajojen. Kaikki ECMAScript-luvut täytyy olla näiden kahden arvon välillä. Laskennassa saadut arvot eivät kuitenkaan välttämättä ole näiden kahden arvon välillä.
Kun laskettu luku on suurempi kuin Number.MAX_VALUE, se annetaan arvoksi Number.POSITIVE_INFINITY, mikä tarkoittaa, että ei ole enää numeroarvoa. Samoin, laskettu arvo, joka on pienempi kuin Number.MIN_VALUE, annetaan arvoksi Number.NEGATIVE_INFINITY, mikä tarkoittaa, että ei ole enää numeroarvoa. Jos laskennassa palautetaan äärettömän suuri arvo, tulosta ei voida käyttää muihin laskutoimituksiin.
Itse asiassa, erityisiä arvoja käytetään äärettömän suurten lukujen esittämiseen (kuten odotettavissa), nimittäin Infinity. Number.POSITIVE_INFINITY:n arvo on Infinity. Number.NEGATIVE_INFINITY:n arvo on -Infinity.
Koska äärettömät luvut voivat olla sekä positiivisia että negatiivisia, voidaan käyttää metodia arvioidakseen, onko luku rajoitettu (eikä yksittäinen äärettömän suuri luku testata erikseen). Voit kutsua isFinite() -metodia mihin tahansa lukuun varmistaaksesi, että se ei ole äärettömän suuri. Esimerkiksi:
var iResult = iNum * some_really_large_number; if (isFinite(iResult)) { alert("finite"); {} else { alert("infinite"); {}
Viimeinen erikoisarvo on NaN, mikä tarkoittaa ei-numeroa (Not a Number). NaN on omituinen erikoisarvo. Yleensä tämä tapahtuu, kun tyyppi (String, Boolean jne.) muunnos epäonnistuu. Esimerkiksi, kun yritetään muuntaa sana blue arvoksi, se epäonnistuu, koska ei ole vastaavaa lukuarvoa. Kuten äärettömän suuri, NaN ei myöskään voi olla osa laskutoimituksia. NaN:n toinen omituinen ominaisuus on, että se ei ole yhtä suuri kuin itseään, mikä tarkoittaa, että seuraava koodi palauttaa false:
alert(NaN == NaN); // Tulostaa "false"
Tämän vuoksi ei suositella NaN-arvon käyttöä itsessään. Funktion isNaN() toimii erittäin hyvin:
alert(isNaN("blue")); // Tulostaa "true" alert(isNaN("666")); // Tulostaa "false"
String-tyyppi
String-tyypin ainutlaatuisuus on, että se on ainoa alkuperäinen tyyppi, jolla ei ole kiinteää kokoa. Voit käyttää merkkijonoa tallentamaan 0 tai useampia Unicode-merkkejä, joita edustavat 16-bittiset kokonaisluvut (Unicode on kansainvälinen merkkiyhteys, jota tämä oppitunti käsittelee myöhemmin).
Jokaisella merkillä on tietty sijainti merkkijonossa, ensimmäinen merkki on sijainnissa 0, toinen merkki sijainnissa 1 ja niin edelleen. Tämä tarkoittaa, että merkkijonon viimeisen merkin sijainti on aina merkkijonon pituus vähennettynä 1:llä:

Merkkiliteraalit ovat määritelty kaksois- tai yksinkertaisilla lainausmerkeillä ("), Java käyttää kaksoisainoja merkkien määrittämiseen, mutta koska ECMAScriptillä ei ole merkkiä, voidaan käyttää joko näistä kahdesta esimerkiksi seuraavat kaksi riviä ovat voimassa:
var sColor1 = "red"; var sColor2 = 'red';
String-tyyppi sisältää myös useita merkkiliteraaleja, Java-, C- ja Perl-kehittäjät tulisi olla siihen erittäin tuttuja.
Alla luetellaan ECMAScriptin merkkiliteraalit:
literaali | merkitys |
---|---|
\n | rivinvaihto |
\t | tabulaattori |
\b | tyhjyys |
\r | rivinvaihto |
\f | sivutusmerkki |
\\\ | kenraalinen viiva |
\' | yksinkertainen lainausmerkki |
\" | kaksikerroksinen lainausmerkki |
\0nnn | oktaalikoodi nnn merkitsee merkkiä (n on 0-7 välillä oleva oktaalinen luku ( |
\xnn | heksadesimaalikoodi nn merkitsee merkkiä (n On 0-7 välillä oleva heksadesimaalinumero (esim. 0, 1, 2, ..., F) |
\unnnn | heksadesimaalikoodi nnnn merkitsee Unicode-merkkiä (n On 0-7 välillä oleva heksadesimaalinumero (esim. 0, 1, 2, ..., F) |
- Edellinen sivu ECMAScript arvot
- Seuraava sivu ECMAScript tyyppimuunnokset