ECMAScript-bittisiirtooperaattorit
- Edellinen sivu ECMAScript-yksinkertaiset operaattorit
- Seuraava sivu Bittisilloittimet
yksinkertainen operaattori sisältää vain yhden parametrin, nimittäin käsiteltävän objektin tai arvon. Ne ovat ECMAScriptissä yksinkertaisimpia operaattoreita.
poista
poista operaattori poistaa aiemmin määritellyn objektin ominaisuuden tai metodin viittauksen. Esimerkiksi:
var o = uusi Object; o.nimi = "David"; huomauta(o.nimi); // Tulosta "David" poista o.nimi; alert(o.name); // Tulostaa "undefined"
Tässä esimerkissä poistettiin name-ominaisuus, mikä tarkoittaa, että siihen suoritetaan pakottava viittauspoisto ja se asetetaan undefined:iin (eli luodun ei-initsioituneen muuttujan arvo).
Delete-operaattori ei voi poistaa kehittäjän määrittämiä ominaisuuksia ja menetelmiä. Esimerkiksi seuraava koodi aiheuttaa virheen:
delete o.toString;
Vaikka toString on kelvollinen metodin nimi, tämä rivi koodia aiheuttaa virheen, koska toString() on alkuperäinen ECMAScript-metodi eikä kehittäjän määrittämä.
void
Void-operaattori palauttaa kaikkiin arvoihin undefined. Tätä operaattoria käytetään yleensä välttämään arvojen tulostaminen, jotka eivät pitäisi tulostua, esimerkiksi kun kutsutaan JavaScript-funktiota HTML:n <a>-elementin kautta. Tämä tehdään oikein, jos funktio ei palauta kelvollista arvoa, muuten selain tyhjentää sivun ja näyttää vain funktion tuloksen. Esimerkiksi:
<a href="javascript:window.open('about:blank')">Klikkaa minua</a>
Jos lisäät tämän rivin HTML-sivulle ja klikkaat linkkiä, näet näytöllä olevan "[object]".TIY
Tämä johtuu siitä, että window.open() -menetelmä palauttaa viittauksen uuteen avattuun ikkunaan. Tämän jälkeen objekti muunnetaan näytettäväksi olevaksi merkkijonoksi.
Välttääksesi tämän vaikutuksen, voit kutsua window.open() -funktiota void-operaattorin avulla:
<a href="javascript:void(window.open('about:blank'))">Klikkaa minua</a>
Tämä tekee window.open() -kutsusta palautuvan undefined, mikä ei ole kelvollinen arvo eikä näy selaimen ikkunassa.
Vinkki:Muista, että ilman paluuarvoa olevat funktiot todella palauttavat undefined.
Etu-incrementti/vähennysope rat
Kaksi operaattoria, jotka on lainattu suoraan C:stä (ja Java) ovat etu-incrementti-ope rat ja etu-vähennysope rat.
Etu-incrementti-ope rat tarkoittaa arvon lisäämistä 1, muodossa kaksi plusmerkkiä (++) ennen muuttujaa:
var iNum = 10; ++iNum;
Toinen rivi koodia lisää iNum:ää 11:een, ja se on käytännössä ekvivalentti:
var iNum = 10; iNum = iNum + 1;
Samoin, etu-vähennysope rat vähentää arvoa 1, muodossa kaksi miinusmerkkiä (--) ennen muuttujaa:
var iNum = 10; --iNum;
Tässä esimerkissä toinen rivi koodia vähentää iNum:n arvoa 9:ään.
Kun käytät etuliitteitä olevia laskutoimitusoperaattoreita, huomaa että lisääntymis- ja vähennysope rat tahtavat tapahtuvat ennen ilmaiselman laskentaa. Tarkastele seuraavaa esimerkkiä:
var iNum = 10; --iNum; alert(iNum); // tulostaa "9" alert(--iNum); // tulostaa "8" alert(iNum); // tulostaa "8"
Toinen rivi koodia tekee iNum:sta vähennyksen, kolmas rivi näyttää tuloksen ("9"). Neljäs rivi tekee iNum:sta uudelleen vähennyksen, mutta tällä kertaa prefiksi-vähennysopea ja tulostus ovat samassa lauseessa, ja tuloksena on "8". Jotta voidaan todistaa, että kaikki vähennysopeat on suoritettu, viidennessä rivissä tulostetaan uudelleen "8".
Laskuexpressioneissa, prefiksi- ja postfix-increment/decrement operaattoreiden prioriteetti on sama, joten niitä lasketaan vasemmalta oikealle. Esimerkiksi:
var iNum1 = 2; var iNum2 = 20; var iNum3 = --iNum1 + ++iNum2; // yhtä kuin "22" var iNum4 = iNum1 + iNum2; // yhtä kuin "22"
Aiemmassa koodissa iNum3 on 22, koska lausekkeen laskettava arvo on 1 + 21. Muuttuja iNum4 on myös 22, ja se on 1 + 21.
Postfix/increment decrement operaattorit
On olemassa kaksi suoraan lainattua C:stä (ja Java) operaattoria, nimittäin postfix-increment ja postfix-decrement operaattorit.
Postfix-increment operaattori lisää arvoa 1, ja se on muodossa kahden lisäysmerkkinä (++) varauksen jälkeen:
var iNum = 10; iNum++;
Odottetusti, postfix-vähennysopea vähentää myös arvoa 1, ja se on muodossa kahden vähennysmerkkinä (--) varauksen jälkeen:
var iNum = 10; iNum--;
Toinen rivi koodia vähentää iNum:n arvoa 9:ään.
Eri kuin префиксными операторами, postfix-Operaattorit suorittavat increment tai decrement operaation vastaan, kun niitä sisältävä lauseke on laskettu. Katsotaan seuraavaa esimerkkiä:
var iNum = 10; iNum--; alert(iNum); // tulostaa "9" alert(iNum--); // tulostaa "9" alert(iNum); // tulostaa "8"
Vastaavasti kuin префиксными операторами, toinen rivi koodia tekee iNum:sta vähennyksen, kolmas rivi näyttää tuloksen ("9"). Neljäs rivi jatkaa iNum:n arvon näyttämistä, mutta tällä kertaa vähennysopea käytetään samassa lauseessa. Koska vähennysopea tapahtuu lausekkeen laskemisen jälkeen, tämä lause näyttää luvun "9". Viidennessä rivissä suoritettu alert-funktio näyttää "8", koska vähennysopea suoritettiin neljännen ja viidennessä rivin välillä.
Laskuexpressioneissa, postincrement ja postdecrement operaattoreiden prioriteetti on sama, joten niitä lasketaan vasemmalta oikealle. Esimerkiksi:
var iNum1 = 2; var iNum2 = 20; var iNum3 = iNum1-- + iNum2++; // yhtä kuin "22" var iNum4 = iNum1 + iNum2; // yhtä kuin "22"
Edellisessä koodissa iNum3 on 22, koska laskennassa lasketaan 2 + 20. Muuttuja iNum4 on myös 22, mutta se laskee 1 + 21, koska lisääminen ja vähentäminen tapahtuvat vasta, kun iNum3 asetetaan arvoksi.
Yhden merkin lisäys- ja vähennyslaskin
Useimmat ihmiset tuttavat yhden merkin lisäys- ja vähennyslaskin, niiden käyttö ECMAScriptissä on sama kuin sinulla oli lukiessa matematiikkaa lukiolaisena.
Yhden merkin lisäyslaskin vaikuttaa itse asiassa numeroihin kielteisesti:
var iNum = 20; iNum = +iNum; alert(iNum); // Tulostaa "20"
Tämä koodi soveltaa yhden merkin lisäyslaskinta numeroon 20, ja palauttaa edelleen 20.
Vaikka yhden merkin lisäyslaskin ei vaikuta numeroihin, sillä on mielenkiintoisia vaikutuksia merkkijonoihin, jotka muuntaa ne numeroksi.
var sNum = "20"; alert(typeof sNum); // Tulostaa "string" var iNum = +sNum; alert(typeof iNum); // Tulostaa "number"
Tämä koodi muuntaa merkkijonon "20" todelliseksi numeroksi. Kun yhden merkin lisäyslaskin käsittelee merkkijonoa, se laskee merkkijonoa samalla tavalla kuin parseInt(), pääasiallinen ero on, että vain merkkijonot, jotka alkavat "0x" (heksadesimaalinen luku), yhden merkin laskin voi muuntaa ne desimaaliseksi arvoksi. Siksi yhden merkin lisäyslaskin muuntaa "010", tuloksena on aina 10, mutta "0xB" muunnetaan 11.
Toisaalta yhden merkin vähennyslaskin on arvon negatiivinen muuntaminen (esimerkiksi 20 muunnetaan -20):
var iNum = 20; iNum = -iNum; alert(iNum); // Tulostaa "-20"
Kuten yhden merkin lisäyslaskin, yhden merkin vähennyslaskin muuntaa myös merkkijonon lähes vastaavaksi numeroksi, mutta se myös tekee arvosta negatiivisen. Esimerkiksi:
var sNum = "20"; alert(typeof sNum); // Tulostaa "string" var iNum = -sNum; alert(iNum); // Tulostaa "-20" alert(typeof iNum); // Tulostaa "number"
Yllä olevassa koodissa yhden merkin vähennyslaskin muuntaa merkkijonon "-20" arvoksi -20 (yhden merkin vähennyslaskin käsittelee heksadesimaaleja ja desimaaleja samalla tavalla kuin yhden merkin lisäyslaskin, mutta se myös tekee arvosta negatiivisen).
- Edellinen sivu ECMAScript-yksinkertaiset operaattorit
- Seuraava sivu Bittisilloittimet