Javascript-laskentaoperaattorit. JavaScript-operaattorit. JavaScriptin sykliset operaattorit - For
Tässä luvussa kuvataan JavaScriptin lausekkeet ja operaattorit, mukaan lukien osoitus, vertailu, aritmetiikka, bittikohtainen, looginen, merkkijono, kolmiosainen ja paljon muuta.
Täydellinen ja yksityiskohtainen luettelo operaattoreista ja lausekkeista löytyy myös viitteestä.
OperaattoritJavaScriptillä on seuraavan tyyppiset operaattorit. Tässä osiossa kuvataan operaattoreita ja annetaan tietoja operaattorien ensisijaisuudesta.
JavaScriptillä on molemmat binääri ja yksipuolinen operaattorit ja yksi erityinen kolmiosainen operaattori, ehdollinen operaattori. Binäärioperaattori vaatii kaksi operandia, yhden ennen operaattoria ja toisen operaattorin jälkeen:
operandi1 operaattori operandi2Esimerkiksi 3+4 tai x*y .
Unaarinen operaattori vaatii yhden operandin joko ennen operaattoria tai sen jälkeen:
operaattori operandi operandi operaattori 12; // 0,5 1/2 == 1,0 / 2,0; // Tämä on tottaTavallisten aritmeettisten operaatioiden (+, -, * /) lisäksi JavaScript tarjoaa seuraavassa taulukossa luetellut aritmeettiset operaattorit:
Loput (%) | Binäärioperaattori. Palauttaa kahden operandin jakamisen kokonaisluvun jäännöksen. | 12% 5 palauttaa 2. |
Kasvata (++) | Unaarinen operaattori. Lisää yhden operandiinsa. Jos sitä käytetään etuliiteoperaattorina (++x), palauttaa operandinsa arvon lisättyään yhden; jos sitä käytetään postfix-operaattorina (x++), palauttaa operandinsa arvon ennen sen lisäämistä. | Jos x on 3, ++x asettaa x:n 4:ksi ja palauttaa 4:n, kun taas x++ palauttaa 3:n ja vain silloin asettaa x:n 4:ksi. |
Vähennä (--) | Unaarinen operaattori. Vähentää yhden operandistaan. Paluuarvo on samanlainen kuin lisäysoperaattorin arvo. | Jos x on 3, niin --x asettaa x:n 2:ksi ja palauttaa 2:n, kun taas x-- palauttaa 3:n ja vain silloin asettaa x:n 2:ksi. |
Unaarinen negaatio (-) | Yksittäinen operaattori. Palauttaa operandinsa negation. | Jos x on 3, niin -x palauttaa -3. |
Yksittäinen plus (+) | Yksittäinen operaattori. Yrittää muuntaa operandi luvuksi, jos se ei jo ole. | +"3" palauttaa 3:n. +true palauttaa 1. |
Eksponentiaalinen operaattori (**) | Laskee kantaluvun eksponentin potenssiin, eli kantaeksponentin | 2 ** 3 palauttaa 8 . 10 ** -1 palauttaa 0.1 . |
Käytä instanceofia, kun sinun on vahvistettava objektin tyyppi suorituksen aikana. Esimerkiksi poikkeuksia pyydtäessäsi voit haarautua erilaisiin poikkeustenkäsittelykoodiin heitetyn poikkeuksen tyypistä riippuen.
Esimerkiksi seuraava koodi käyttää instanceofia määrittääkseen, onko theDay Date-objekti. Koska theDay on Date-objekti, if-käskyn käskyt suoritetaan.
Muutt theDay = uusi päivämäärä(1995, 12, 17); if (päivämäärän esiintymä) ( // suoritettavat käskyt )
Operaattorin etusijaThe etusijalla operaattoreista määrittää järjestyksen, jossa niitä käytetään lauseketta arvioitaessa. Voit ohittaa operaattorin ensisijaisuuden käyttämällä sulkeita.
Seuraavassa taulukossa kuvataan operaattoreiden ensisijaisuus korkeimmasta pienimpään.
jäsen | . |
soita/luo ilmentymä | () Uusi |
negaatio/lisäys | ! ~ - + ++ -- tyhjän poiston tyyppi |
kertoa/jakaa | * / % |
yhteenlasku/vähennys | + - |
bittikohtainen siirto | > >>> |
suhteellinen | < >= tapauksessa |
tasa-arvo | == != === !== |
bitwise-ja | & |
bitwise-xor | ^ |
bittikohtaisesti-tai | | |
looginen-ja | && |
looginen-tai | || |
ehdollinen | ?: |
toimeksianto | = += -= *= /= %= = >>>= &= ^= |= |
pilkku | , |
Tämän taulukon yksityiskohtaisempi versio, jossa on linkit lisätietoihin kustakin operaattorista, löytyy JavaScript-viittauksesta.
IlmaisutAn ilmaisu on mikä tahansa kelvollinen koodiyksikkö, joka ratkaisee arvon.
Jokainen syntaktisesti kelvollinen lauseke ratkaisee jonkin arvon, mutta käsitteellisesti on olemassa kahdenlaisia lausekkeita: sivuvaikutuksineen (esimerkiksi ne, jotka antavat arvon muuttujalle) ja ne, jotka jossain mielessä arvioivat ja siten ratkaisevat arvon.
Lauseke x = 7 on esimerkki ensimmäisestä tyypistä. Tämä lauseke käyttää = operaattori määrittääksesi arvon seitsemän muuttujalle x . Itse lausekkeen arvo on seitsemän.
Koodi 3 + 4 on esimerkki toisesta lauseketyypistä. Tämä lauseke käyttää +-operaattoria kolmen ja neljän yhteen lisäämiseen ilman, että tulos, seitsemän, annetaan muuttujalle.
JavaScriptillä on seuraavat lausekeluokat:
Ensisijaiset ilmaisutPerusavainsanat ja yleiset lausekkeet JavaScriptissä.
TämäKäytä tätä avainsanaa viitataksesi nykyiseen objektiin. Yleensä tämä viittaa kutsuvaan objektiin menetelmässä. Käytä tätä joko pisteen tai hakasulkeiden kanssa:
Tämä["omaisuudenNimi"] this.propertyName
Oletetaan, että validate-niminen toiminto vahvistaa objektin arvoominaisuuden, kun otetaan huomioon objekti sekä korkeat ja pienet arvot:
Funktio valide(obj, lowval, hival) ( if ((obj.arvo< lowval) || (obj.value >hival)) console.log("Virheellinen arvo!"); )
Voit kutsua validointia kunkin lomakeelementin onChange-tapahtumakäsittelijässä ja välittää sen lomakeelementille, kuten seuraavassa esimerkissä:
Anna numero väliltä 18-99:
RyhmittelyoperaattoriRyhmittelyoperaattori() ohjaa lausekkeiden arvioinnin ensisijaisuutta. Voit esimerkiksi ohittaa kerto- ja jakolaskun ensin ja sitten yhteen- ja vähennyslaskun laskeaksesi yhteenlaskua ensin.
Var a = 1; var b = 2; var c = 3; // oletusarvo a + b * c // 7 // arvioitu oletusarvoisesti näin a + (b * c) // 7 // nyt ohittava etusija // yhteenlasku ennen kertolaskua (a + b) * c // 9 / / joka vastaa a * c + b * c // 9
Vasemman puolen ilmaisutVasemmat arvot ovat tehtävän kohde.
UusiVoit käyttää uutta operaattoria luodaksesi ilmentymän käyttäjän määrittämälle objektityypille tai jollekin sisäänrakennetuista objektityypeistä. Käytä uutta seuraavasti:
Muutt objektinNimi = uusi objektityyppi();
superSuper-avainsanaa käytetään kutsumaan funktioita objektin ylätasolla. Luokkien kanssa on hyödyllistä kutsua esimerkiksi ylätason konstruktoria.
Super(); // kutsuu ylätason konstruktoria. super.functionOnParent();
Spread-operaattoriHajautusoperaattori mahdollistaa lausekkeen laajentamisen paikoissa, joissa odotetaan useita argumentteja (funktiokutsuille) tai useita elementtejä (taulukkoliteraaleille).
Esimerkki: Jos sinulla on tänään taulukko ja haluat luoda uuden taulukon, jossa olemassa oleva on osa sitä, taulukon kirjaimellinen syntaksi ei enää riitä ja sinun on palattava pakolliseen koodiin käyttämällä yhdistelmää push , splice , concat jne. Hajautetulla syntaksilla tästä tulee paljon ytimekkäämpi:
Var osat = ["hartiat", "polvet"]; var lyrics = ["pää", ...osat, "ja", "varpaat"];
Samoin leviämisoperaattori toimii funktiokutsujen kanssa:
Funktio f(x, y, z) ( ) var args = ; f(...args);
Ensinnäkin lyhyesti JavaScriptin ilmaisuista.
JavaScript-lausekkeetJavaScriptillä on lauseita ja lausekkeita.
Ohjeet eivät palauta arvoja.
Ilmaisut Aina palauttaa joitain arvoja. Kun tulkki näkee lausekkeen, se arvioi sen arvon ja korvaa lausekkeen sen arvolla.
Ilmaisut voivat olla yksinkertaisia tai yhdistettyjä. Yksinkertaiset lausekkeet eivät sisällä muita lausekkeita.
Yksinkertaisia ilmaisuja ovat mm.
Kun jäsentäjä löytää tunnisteen, sen on ensin laskettava sen arvo, eli esimerkiksi korvattava muuttujan nimi sen arvolla.
Literaalin arvo on sama kuin se on kirjoitettu komentosarjakoodiin.
JavaScript-operaattorit ja monimutkaiset lausekkeetOperaattoreita käytetään yhdistämään useita yksinkertaisia lausekkeita yhdeksi monimutkaiseksi lausekkeeksi.
Operaattoreita ovat:
- Unaarinen (yksi operandi).
- Binääri (kaksi operandia).
- Kolmiosainen operaattori? JavaScriptissä (kolme operandia, on vain yksi kolmioperaattori).
Operandi on yksinkertainen lauseke, johon sovelletaan operaattoria.
Esimerkiksi aritmeettinen summausoperaattori "+" on binäärioperaattori. Se summaa vasemman ja oikean operandin ja palauttaa summan.
Muuttujan luku = 4 + 7;
Muuten, osoitus tapahtuu määritysoperaattorilla "=". Tämä operaattori arvioi oikean operandin arvon ja osoittaa sen vasemmalle operandille.
JavaScriptissä unary plusilla on vain yksi operandi. Unary plus ei ole aritmeettinen operaattori, se muuntaa operandin luvuksi.
Muutt myVar = "7"; document.write(typeof(myVar) + "
"); // Tulostaa merkkijonon myVar = +omaVar; document.write(typeof(myVar) + "
"); // Tulosta numero asiakirjaan
Aluksi myVar sisälsi merkkijonon "7", joka on merkkijonotyypin literaali, ei numero. Unary plus -operaattorin avulla muunnosimme merkkijonon literaalin numeeriseksi.
Aritmeettiset operaatiotAritmeettiset operaatiot ovat hyvin tunnettuja matemaattisia operaatioita.
Ehkä % (modulo) -operaattori kaipaa selvennystä. 9 jaetaan viidellä jäännöksellä 4, ja tämä operaattori palauttaa tämän jäännöksen. Sitä kutsutaan myös moduloksi. Kun käytetään kokonaislukuja, tämän operaattorin tulos on myös kokonaisluku. Kun käytetään liukulukuja, tuloksena on liukuluku.
5.5 % 2.2 = 1.1
Aritmeettisia operaatioita suoritettaessa on muistettava, että jos ne suoritetaan väärin, ne voivat johtaa seuraaviin tuloksiin:
- NaN (Not a Number) ei ole numero.
- Infinity - ääretön.
Tässä on mitä nollalla jakaminen tekee:
Muutt myVar = 0 / 0; document.write("Muuttujan arvo: " + myVar + ", sen tyyppi: " + typeof(myVar) + "
");
Vertailuoperaattoreita käytetään lausekkeiden vertaamiseen. Lauseke, jossa on ehdollinen operaattori, palauttaa Boolen arvon - tosi tai epätosi (tosi / epätosi).
Vertailuoperaatioita voidaan suorittaa myös merkkijonojen avulla. Ainoa ehto oikealle tulokselle on täsmäyttää samantyyppiset tiedot. Muussa tapauksessa JavaScript yrittää muuntaa tietoja tyypistä toiseen, eikä tämä ole aina mahdollista. Virheiden välttämiseksi vertaa vain yhden tyypin tietoja.
TehtäväoperaattoritIlmeisin esimerkki osoitusoperaattorista on yksinkertainen osoitus (=). Tätä operaattoria (=) käytetään arvon määrittämiseen muuttujalle.
Mutta on myös joukko määritysoperaattoreita, jotka ovat pikakuvakkeita.
Loogiset operaatiotBoolen operaatioita käytetään usein if else-konstruktion kanssa JS:ssä. Heidän työnsä esitellään esimerkkien avulla. Mutta ensin luettelo loogisista operaattoreista.
Nyt yksinkertaisia esimerkkejä:
If (tosi && tosi) document.write("Se toimii!
"); if (tosi || false) document.write("Se toimii!
"); if (!false) document.write("Se toimii!
");
Katsotaanpa näitä esimerkkejä:
Looginen AND-operaattori (&&) palauttaa arvon tosi, jos molemmat operandit ovat tosi.
Looginen TAI-operaattori (||) palauttaa tosi, jos ainakin yksi operandi on tosi.
Looginen EI (!) -operaattori ottaa yhden operandin ja kääntää tosi/epätosi-arvon.
Unaariset operaattoritUnaarioperaattorit ovat operaattoreita, joilla on yksi operandi. Tässä on muutamia tällaisia operaattoreita:
- ++ - lisää 1 (lisäys). Se voi olla etuliite ja jälkiliite, lisää siitä alla.
- -- - vähennä 1 (vähennä). Se voi olla etuliite ja jälkiliite, lisää siitä alla.
- + - yksipuolinen plus.
- - - yksipuolinen miinus.
Unaarinen miinus kääntää lausekkeen etumerkin. Esimerkiksi kun kirjoitat -100 ohjelmaan, käytät yksinkertaisesti unaarista miinusta lukukirjaimeen 100.
Sinun on ymmärrettävä tarkasti, kuinka unaari miinus toimii - se palauttaa operandin arvon päinvastaisella merkillä. Tässä on esimerkki siitä, kuinka unaari-miinusta käytetään oikein:
Muutt myVar = -100; document.write(-myVar + " - unaari miinus toimi, mutta muuttuja myös = " + myVar + ".
"); myVar = -omaVar; document.write("Nyt muuttuja = " + myVar + ".
");
Annetaan merkityksetön esimerkki kaksinkertaisesta unaarisesta miinuksesta. Uskon, että siitä on hyötyä opetustarkoituksiin:
Muutt myVar = -100; document.write(--myVar + " on lisäys, ei kaksinkertainen unaari miinus.
"); document.write("Nyt muuttuja = " + myVar + ".
"); document.write(-(-myVar) + " ja tämä on unaari-miinus -merkin kaksoiskäyttö.
");
Unary plus ei suorita matemaattisia operaatioita. Se heittää literaalin numeeriseen tyyppiin.
Var myVar = "78687"; document.write(typeof(myVar) + ".
"); myVar = +omaMuutt.; document.write(tyyppi(omaMuut.) + ".
");
Ohjelmoinnissa joudut usein lisäämään tai vähentämään muuttujan arvoa yhdellä. Tälle on unaarioperaattoreita:
- ++ - lisää 1 (lisäys).
- -- - vähennä 1 (vähennys).
Toisin kuin yksipuolinen plus ja miinus, lisäys ja vähennys muuttavat muuttujan arvoa kutsuttaessa.
Muutt myVar = 10; document.write(++myVar + ".
"); document.write(myVar + ".
");
Vähennys (--) toimii samalla tavalla.
Katsotaan nyt näiden operaattoreiden etu- ja jälkiliitteiden käyttöä.
- ++myVar - etuliite kasvaa yhdellä.
- myVar++ - postfixin lisäys 1:llä.
Ero on tämä:
- Näiden operaattoreiden etuliitekäyttö arvioi ensin unaarioperaattorin arvon ja käyttää sitten tulosta lausekkeessa.
- Postfixin käyttö arvioi ensin lausekkeen ja sen jälkeen unaarioperaattorin (++ tai -- ).
Yksinkertainen esimerkki auttaa sinua ymmärtämään tämän:
Muutt myVar = 10; document.write((++myVar + 5) + ".
"); var myVar = 10; document.write((omaMuuttu++ + 5) + ".
"); document.write("Muuttuja = " + myVar + ".
");
Lisäystä ja vähennystä voidaan käyttää vain muuttujien kanssa, niitä ei voi käyttää numeeristen literaalien kanssa. Yksinkertaisesti sanottuna ++7-koodi antoi virheen komentosarjassa.
Muut operaattoritJavaScriptissä on muita operaattoreita:
- Kolmiosainen (kolme operandi) -operaattori
JavaScript tukee kompaktia joukkoa operaattoreita, joita voidaan käyttää interaktiivisten Web-sivujen luomiseen. Tämä luku sisältää yleiskatsauksen näistä operaattoreista.
Tämä luku sisältää seuraavat osiot, jotka tarjoavat lyhyen yleiskatsauksen jokaisesta lausunnosta:
- Operaattorilohko: ( )
- Ehdolliset lauseet: jos...else ja vaihda
- Silmukkalausekkeet: for, while, do...while, otsikko, katkaisee ja jatka (tunniste itsessään ei ole silmukkakäsky, mutta sitä käytetään usein tiettyjen lauseiden kanssa)
- Objektin manipulointioperaattorit: sisään ja kanssa
- Kommentit
- Poikkeuskäsittelyoperaattorit: kokeile... ota kiinni ja heitä
Käytä puolipistettä (;) erottaaksesi lausunnot JavaScript-koodissa.
Katso kirja JavaScript Core. Hakemisto. lisätietoja operaattoreista tästä luvusta.
1. Lausekelohko Lauselohkoa käytetään lausekkeiden ryhmittelyyn. Lohko on rajattu kiharoilla aaltosulkeilla:( lauseke1 lausunto2 . lauseke )
2. Ehdolliset lauseet Ehdollinen lauseke on joukko komentoja, jotka suoritetaan, jos määritetty ehto on tosi. JavaScript tukee kahta ehdollista lauseketta: if...else ja switch .2.1. if...else lauseke Tätä lausetta käytetään tiettyjen lauseiden suorittamiseen, jos Boolen ehto on tosi ; käytä valinnaista else - lohkoa muiden käskyjen suorittamiseen , jos ehto on epätosi . if-lause näyttää tältä:jos (ehto) (lausekkeet1) [else (lausekkeet2)]
Ehto voi olla mikä tahansa JavaScript-lauseke, jonka arvo on tosi tai epätosi. Suoritettavat lauseet voivat olla mitä tahansa JavaScript-lauseita, mukaan lukien sisäkkäiset if-lauseet. Jos sinun on suoritettava useampi kuin yksi käsky if-tai else-lauseen jälkeen, sinun on suljettava nämä suoritettavat käskyt aaltosulkeisiin ().
Ehdollislausekkeessa ei saa käyttää yksinkertaisia tehtäviä. ÄLÄ käytä esimerkiksi tällaista koodia:
Jos sinun on käytettävä tehtävää ehdollisessa käskyssä, kirjoita ylimääräisiä sulkeita tehtäväoperaattorin ympärille. Esimerkiksi if((x = y)) .
Älä sekoita primitiivisiä Boolen arvoja true ja false Boolen objektin todellisiin ja vääriin arvoihin. Kaikki objektit, joiden arvo ei ole määrittelemätön , null , nolla , **NaN** tai tyhjä merkkijono, mukaan lukien Boolen objekti, jonka arvo on false , evaluoituu tosi, kun se välitetään ehdolliseen lauseeseen. Esimerkiksi:
var b = uusi Boolen arvo(false); jos (b ) // tämä ehto on tosi
Esimerkki.
Tässä esimerkissä checkData-funktio palauttaa tosi, jos Teksti-objektin merkkien määrä on kolme; muussa tapauksessa tulostaa varoituksen ja palauttaa false .
funktio checkData () ( if (asiakirja . muoto1 . kolmimerkki . arvo . pituus == 3 ) ( return true ) else ( alert (" Syötä täsmälleen kolme merkkiä " + dokumentti . muoto1 . threeChar . arvo + " ei kelpaa." ) palauta väärä ))
2.2. Switch-lause Switch-käskyn avulla ohjelma voi arvioida lausekkeen ja yrittää sovittaa lausekkeen arvon tapausmerkinnän arvoon. Jos vastaavuus löytyy, ohjelma suorittaa siihen liittyvän käskyn. Kytkimen lausunto näyttää tältä:kytkin (lauseke )( case label : lauseke ; break ; case label : lauseke ; break ; ... oletus : lauseke ;)
Ohjelma etsii ensin otsikon, joka vastaa lausekkeen arvoa ja suorittaa sitten siihen liittyvän käskyn. Jos vastaavaa nimiötä ei löydy, ohjelma etsii valinnaista oletuskäskyä ja suorittaa siihen liittyvän käskyn, jos se löytyy. Jos oletuskäskyä ei löydy, ohjelma jatkaa käskyn suorittamista switch-käskyn päättymisen jälkeen.
Tapaustasoon liittyvä valinnainen break-käsky varmistaa, että ohjelma katkaisee switch-käskyn suorittamisen heti, kun match-käsky on suoritettu, ja jatkaa suoritusta kytkinkäskyä seuraavasta käskystä. Jos break ei ole läsnä, ohjelma jatkaa seuraavan käskyn suorittamista switch-käskyn sisällä.
Esimerkki.
Tässä, jos expr evaluoi banaanit, ohjelma vastaa kirjainkoon Banaanit ja suorittaa siihen liittyvän käskyn. Jos break kohdataan, ohjelma katkaisee kytkimen ja suorittaa käskyn switch-käskylohkon jälkeen. Jos tauko puuttuu, myös kirsikoita koskeva lauseke suoritetaan.
kytkin (expr) ( case "Oranges" : document. write (" Appelsiinit ovat 0,59 dollaria paunalta.
" ); break ; case " Apples " : document . write ( " Omenat ovat 0,32 dollaria puntaa.
" ); break ; case " Banaanit " : document . write ( " Banaanit ovat 0,48 dollaria paunalta.
" ); break ; case " Cherries " : document . write ( " Kirsikat ovat 3,00 dollaria puntaa.
" ); break ; oletus : document . write ( " Anteeksi , olemme loppuneet " + i + " .
" ) ;) document . write (" Onko jotain muuta, mitä haluaisit?
"
)
;
Toinen silmukkaoperaattori, for...in , suorittaa myös käskynsä syklisesti, mutta sitä käytetään työskentelemään objektien kanssa. Katso Objektin manipulointioperaattorit.
3.1. for Statement For-silmukka toistuu, kunnes määritetty arvo on epätosi. JavaScript for silmukka on samanlainen kuin Java ja C for -lause näyttää tältä:for ([ originExpression ]; [ condition ]; [ incrementExpression ]) ( lausekkeet )
Kun for-silmukka suoritetaan, tapahtuu seuraavaa:
1. Alkulauseke, jos se on olemassa, suoritetaan. Tämä lauseke tyypillisesti alustaa yhden tai useamman silmukkalaskurin, ja syntaksi sallii kaiken monimutkaiset lausekkeet. Tämä lauseke voi myös ilmoittaa muuttujia.
2. Ehtolauseke arvioidaan. Jos ehto on tosi, silmukkakäskyt suoritetaan. Jos ehto on epätosi, for-silmukka päättyy. Jos ehtolauseke puuttuu kokonaan, ehdon oletetaan olevan tosi.
3. Lausunnot toteutetaan.
4. IncrementExpression, jos se on olemassa, suoritetaan ja ohjaus palaa vaiheeseen 2.
Esimerkki.
Tämä funktio sisältää for-lausekkeen, joka laskee valittujen vaihtoehtojen määrän vieritettävässä luettelossa (Valitse-objekti, jonka avulla voit valita useita kohteita). For-lause ilmoittaa muuttujan i ja alustaa sen nollaan. Se tarkistaa, onko i pienempi kuin Select-objektin vaihtoehtojen määrä, suorittaa if-käskyn ja kasvattaa muuttujaa i yhdellä jokaisen silmukan läpikulun jälkeen.
funktio howMony(selectObject) ( var numberSelected=0; for (var i=0; i< selectObject.options.length; i++) { if (selectObject.options[i].selected==true) numberSelected++; } return numberSelected; }
Valitse musiikkityyppejä ja napsauta alla olevaa painiketta:
R&B Jazz Blues New Age Klassinen ooppera
3.2. do...while-lause Do...while-lausetta toistetaan niin kauan kuin määritetty lauseke on epätosi. Do...while -lause näyttää tältä:
tehdä ( lause ) while ( ehto )
lauseke suoritetaan kerran ennen ehdon tarkistamista. Jos ehto on tosi, lauseke suoritetaan uudelleen. Kunkin suorituksen lopussa kunto tarkistetaan. Jos ehto on epätosi , suoritus pysähtyy ja hallinta siirtyy käskyyn do...while -toiminnon jälkeen.
Esimerkki.
Tässä esimerkissä do-silmukka iteroituu vähintään kerran ja toistaa iteraatiot niin kauan kuin i on pienempi kuin 5 .
do ( i += 1 ; dokumentti . kirjoittaa (i ) ; ) while (i< 5 ) ;
3.3. While-lause while-lause suorittaa lauseensa niin kauan kuin määritetty ehto on tosi. while-lause näyttää tältä:while (ehto) (lausekkeet)
Jos ehdosta tulee epätosi , silmukan sisällä olevat käskyt lopettavat suorittamisen ja ohjaus siirtyy silmukan jälkeiseen seuraavaan lauseeseen.
Ehto tarkistetaan ennen kuin silmukan sisällä olevat lauseet suoritetaan. Jos ehto palauttaa tosi, lauseet suoritetaan ja ehto tarkistetaan uudelleen. Jos ehto palauttaa false , silmukka päättyy ja ohjaus siirtyy while-lausetta seuraavaan käskyyn.
Esimerkki 1.
Tämä while-silmukka toistuu, kunnes n on pienempi kuin 3:
n = 0; x = 0; kun (n< 3 ) { n ++; x += n ; }
Jokaisessa iteraatiossa silmukka lisää n:ää ja lisää tämän arvon x:ään. Siksi x ja n saavat seuraavat arvot:
- Ensimmäisen ajon jälkeen: n = 1 ja x = 1
- Toisen ajon jälkeen: n = 2 ja x = 3
- Kolmannen ajon jälkeen: n = 3 ja x = 6
Esimerkki 2: Infinite loop.
Varmista, että silmukan ehdoista tulee koskaan epätosi; muuten sykli ei koskaan keskeydy. Seuraava while-silmukka suoritetaan loputtomasti, koska ehdosta ei koskaan tule epätosi:
while (tosi) (hälytys (" Hei, maailma " ) )
3.4. Label Statement Tarralauseke on tunniste, johon voidaan viitata mistä tahansa ohjelmasta. Voit esimerkiksi käyttää tunnistetta silmukan tunnistamiseen ja sitten lopettaa silmukan tai jatkaa suoritusta break- tai jatka-käskyjen avulla.Tunnistelausekkeen syntaksi näyttää tältä:
otsikko: lausunto
Tunnisteen arvo voi olla mikä tahansa kelvollinen JavaScript-tunniste, joka ei ole varattu sana. Tunnisteella tunnistettu lausunto/lausunto voi olla mikä tahansa lausunto.
Esimerkki.
Tässä esimerkissä tarra markLoop identifioi while-silmukan.
markLoop : while (theMark == true ) doSomething () ; )
3.5. break-lause Käytä break-lausetta katkaistaksesi kytkinsilmukan tai nimikekäskyn.- Jos käytät break-näppäintä ilman tunnistetta, se katkaisee välittömästi lähimmän sisältävän while , do-while , for or switch -käskyn ja siirtää ohjauksen seuraavalle käskylle.
- Jos käytät break with label -toimintoa, se katkaisee määritetyn otsikoitetun lauseen.
1 . tauko 2. rikkoa etiketti
Ensimmäinen vaihtoehto katkaisee lähimmän sisältävän silmukan tai kytkimen ; toinen vaihtoehto keskeyttää määritellyn käskyn, jolla on tunniste.
Esimerkki.
Tämä toistuu taulukon elementtien läpi, kunnes elementin indeksi arvolla theValue löytyy:
for (i = 0; i< a . length ; i ++ ) { if (a [ i ] = theValue ) break ; }
3.6. Jatka-operaattori Jatka-operaattoria käytetään while-, do-while-, for- ja label -lausekkeiden uudelleenkäynnistykseen.- Jos käytät jatka-toimintoa ilman tunnistetta, se katkaisee lähimmän while-, do-while- tai for-silmukan nykyisen iteraation ja jatkaa kyseisen silmukan suorittamista seuraavasta iteraatiosta. Toisin kuin break-lause, jatka ei keskeytä silmukan suorittamista kokonaan. While-silmukassa se menee kuntoon. For-silmukassa inkrementtilausekkeessa .
- Jos käytät jatka-tunnistetta, se koskee silmukkakäskyä, joka tunnistetaan.
1 . jatka 2. jatka etikettiä
Esimerkki 1.
Tämä on esimerkki while-silmukasta, jossa on jatkamiskäsky, joka suoritetaan, jos i:n arvo on 3 . Joten n saa arvot 1, 3, 7 ja 12.
i = 0; n = 0; sillä aikaa kun minä< 5 ) { i ++; if (i == 3 ) continue ; n += i ; }
Esimerkki 2.
Lause, jonka nimi on checkiandj, sisältää lauseen, jonka nimi on checkj . Jos jatkuu, ohjelma keskeyttää nykyisen checkj:n iteraation ja aloittaa seuraavan iteraation. Joka kerta, kun jatkaminen havaitaan, checkj aloittaa iteroinnin uudelleen, kunnes sen ehto palauttaa false . Jos false palautetaan, loput checkiandj-käskystä suoritetaan ja checkiandj toistetaan, kunnes sen ehto palauttaa epätosi. Jos palautetaan false, ohjelma jatkaa suoritusta checkiandj:n jälkeisestä käskystä.
Jos jatkalla on checkiandj-tunniste, ohjelma jatkaa suoritusta checkiandj-käskyn alusta.
checkiandj : while (ts<
4
) {
document
.
write
(i
+
"
" ) ; i += 1 ; checkj : while (j > 4 ) ( dokumentti . kirjoittaa (j + "
" ) ; j -= 1 ; jos ((j % 2 ) == 0 ) jatka tarkistustaj ; dokumentti . kirjoittaa (j + " on pariton.
kirjoittaa ( " i = " + i + " ) dokumentti
" ); dokumentti . kirjoittaa ( " j = " + j + "
"
)
;
}
For (muuttuja objektissa) (
Esimerkki.
Tämä funktio ottaa objektin ja objektin nimen argumenttina. Sitten se toistaa objektin kaikki ominaisuudet ja palauttaa merkkijonon - luettelon ominaisuuksien nimistä ja niiden arvoista.
funktio dump_props (obj , objektin_nimi ) ( var tulos = "" ; for (var i in obj ) ( tulos += objektin_nimi + " . " + i + " = " + obj [ i ] + "
" ) tulos += " " ; palauta tulos ;)
Autoobjektille, jolla on merkki- ja malliominaisuudet, tulos olisi:
auto. merkki = Ford-auto. malli=Mustang
4.2. with-lauseke with-käsky asettaa oletusobjektin käskylohkojoukolle. JavaScript tarkastelee määrittämättömiä nimiä käskylohkon sisällä ja määrittää, ovatko nimet oletuksena objektin ominaisuuksia. Jos määrittelemätön nimi on ominaisuus, tätä ominaisuutta käytetään lausunnossa; muussa tapauksessa käytetään paikallista tai globaalia muuttujaa.Lauseke näyttää tältä:
kanssa (objekti)( lauseet)
Esimerkki.
Tässä with-käsky määrittää, että Math-objekti on oletusobjekti. With-käskyn jälkeiset lauseet käyttävät PI-ominaisuutta sekä cos- ja sin-menetelmiä määrittelemättä objektia. JavaScript hyväksyy matemaattisen objektin näiden kutsujen objektiksi.
var a , x , y ;; var r = 10 ja (Math) (a = PI * r * r ; x = r * cos (PI ) ; y = r * sin (PI / 2); )
Huomautus:
With-käskyn käyttäminen voi hidastaa ohjelman suorittamista merkittävästi.
5. Kommentit Kommentit selittävät yleensä, mitä koodi tekee. Tulkki jättää kommentit huomioimatta. JavaScript tukee Java- ja C++-tyylisiä kommentteja:- Yksirivinen kommentti, jossa on kaksoisviiva rivin alussa (//).
- Monirivinen kommentti /* alussa ja */ lopussa.
Tässä on esimerkki kahdesta kommentista:
// Tämä on yksirivinen kommentti. /* Ja tämä on monirivinen. Se voi olla minkä pituinen tahansa ja voit laittaa tänne mitä haluat. */
6. Poikkeuskäsittelyoperaattorit Voit nostaa poikkeuksen throw-käskyllä ja käsitellä sitä try...catch-käskyillä.Try...catch-käskyä käytetään myös Java-poikkeuksien käsittelyyn. Katso Java-poikkeuksien käsitteleminen JavaScriptissä ja JavaScript-poikkeusten käsittely Javassa.
6.1. Throw-lause Heitto-lausetta käytetään heittämään poikkeus. Jos teet poikkeuksen, määrität lausekkeen, joka sisältää poikkeuksen arvon:heittää ilme
Seuraava koodi antaa useita poikkeuksia.
heittää "Error2" ; // heittää poikkeuksen merkkijonoarvolla heitto 42 ; // heittää poikkeuksen arvolla 42 throw true ; // heittää poikkeuksen arvolla true
Kun teet poikkeuksen, voit määrittää objektin. Tämän jälkeen pääset käsiksi kohteen ominaisuuksiin catch-lohkossa. Seuraava esimerkki luo myUserException-objektin, jonka tyyppi on UserException, ja käyttää sitä throw-käskyssä.
// Luodaan UserException-tyyppinen objekti funktio UserException (viesti) ( this . message = message ; this . name = " UserException " ; ) // Objektin esiintymä luodaan ja sitä kutsutaan nimellä myUserException = new UserException ( " Arvo liian korkea " ) ; heittää myUserException ;
6.2. try...catch-lause try...catch-käsky merkitsee lausekkeiden lohkon, yrittää suorittaa ne ja määrittää yhden tai useamman mahdollisen vastauksen poikkeuksen sattuessa. Jos tapahtuu poikkeus, try...catch-käsky saa sen kiinni.try...catch-käsky koostuu try-lohkosta, joka sisältää yhden tai useamman käskyn, ja nollasta tai useammasta catch-lohkosta, jotka sisältävät käskyjä, jotka määrittelevät, mitä tehdä, kun try-lohkossa tehdään poikkeus. Eli jos haluat suorittaa try-lohkon, mutta se ei suorita, annat ohjauksen catch-lohkolle. Jos jokin try-lohkon (tai try-lohkon sisältä kutsutun funktion käsky) antaa poikkeuksen, ohjaus siirtyy välittömästi catch-lohkoon. Jos poikkeusta ei heitetty, kiinnityslohko ohitetaan. Lopullinen lohko suoritetaan sen jälkeen, kun try and catch -lauseet on suoritettu, mutta ennen kuin try...catch -lauseen jälkeinen käsky suoritetaan.
Seuraava esimerkki käyttää try...catch-käskyä. Kutsutaan funktio, joka pyytää taulukosta kuukauden nimen funktiolle välitetyn arvon perusteella. Jos arvo ei vastaa kuukauden numeroa (1-12), annetaan poikkeus arvolla "InvalidMonthNo" ja catch block -lauseet asettavat muuttujan monthName arvoksi tuntematon.
funktio getMonthName (mo ) ( mo = mo - 1 ; // Kuukauden numero määritellään taulukon indeksillä (1=tam, 12=dec) var months = new Array (" tammi " , " helmikuu " , " maalis " , " huhtikuu " , " toukokuu " , " kesäkuu " , " heinäkuu " , " elokuu " , " syyskuu " , " loka " , " marraskuu " , " joulukuu " ) if ( kuukautta [ kk ] ! = null ) ( paluukuukaudet ; [ mo ] ) else ( heittää " InvalidMonthNo " ) ) try ( // yritä suorittaa nämä lauseet: monthName = getMonthName (myMonth ) // funktio saattaa heittää poikkeuksen ) catch (e ) ( monthName = " tuntematon " logMyErrors (e ) // poikkeuksen aiheuttanut objekti välitetään poikkeuskäsittelijälle)
heittää ; voit käyttää tätä tunnistetta saadaksesi tietoja poikkeuksesta. JavaScript luo tämän tunnisteen syöttäessään catch-lohkon; tunniste on olemassa vain catch-lohkon suorittamisen aikana; Kun catch-lohko on suoritettu loppuun, tunniste ei ole enää käytettävissä.
Esimerkiksi seuraava koodi heittää poikkeuksen. Jos tapahtuu poikkeus, ohjaus välitetään catch-lohkolle.
yritä (heittää "myException" // poikkeus heitetään) catch (e) ( // operaattorit käsittelemään poikkeuksia logMyErrors (e) // poikkeus välitetään virheenkäsittelijälle)
Useita kiinnityslohkoja
Yksi try-lause voi sisältää useita catch-lauseita, joista jokainen käsittelee tietyntyyppisiä poikkeuksia. Tässä tapauksessa asianmukainen ehdollinen catch-lohko syötetään vain, kun kyseiselle lohkolle määritetty poikkeus nostetaan. Voit myös valinnaisesti sisällyttää erillisen catch-lohkon kaikille määrittelemättömille poikkeuksille viimeisenä catch-lohkona käskyssä.
Esimerkiksi seuraava funktio kutsuu kolmea muuta funktiota (ilmoitettu muualla), jotka testaavat sen argumentteja. Jos vahvistustoiminto määrittää, että testattava komponentti on virheellinen, se palauttaa 0:n, jolloin kutsuva funktio heittää määritetyn poikkeuksen.
funktio getCustInfo (nimi , tunnus , sähköposti ) ( var n , i , e ; if (! validate_name (nimi )) heittää " InvalidNameException " else n = nimi ; if (! validate_id (id )) heittää " InvalidIdException " else i = id if (! validate_email ( email )) throw " InvalidEmailException " else e = email = ( n + " " + i + " " + e ) ;
Ehdolliset catch-lohkot ohjaavat asianmukaisen poikkeuskäsittelijän kutsumista.
" ) ( // kutsuu virheellisen ids-käsittelijän bad_id_handler (e ) ) catch (e if e == " InvalidEmailException " ) ( // kutsuu virheellisen sähköpostiosoitteen käsittelijän bad_email_handler (e ) ) catch (e )( // tuntematon poikkeus on kirjoitettu lokitiedostoon logError (e) )
vihdoin esto
Lopullinen lohko sisältää käskyt, jotka suoritetaan try and catch -lauseiden suorittamisen jälkeen, mutta ennen kuin try...catch -lauseen jälkeen tulevat käskyt suoritetaan. Lopullinen lohko suoritetaan riippumatta siitä, heitetäänkö poikkeus. Jos poikkeus heitetään, lopullisen lohkon käskyt suoritetaan, vaikka mikään catch-lohko ei olisi käsitellyt poikkeusta.
Voit käyttää lopullista estoa lopettaaksesi skriptin sulavasti, kun poikkeus tapahtuu; saatat joutua esimerkiksi vapauttamaan komentosarjan sitoman resurssin. Seuraavassa esimerkissä tiedosto avataan ja operaattorit toimivat sillä (palvelinpuolen JavaScript sallii pääsyn tiedostoihin). Jos poikkeus tehdään tiedoston ollessa auki, lopullinen lohko sulkee tiedoston ennen kuin komentosarja epäonnistuu.
openMyFile(); yritä ( writeMyFile ( theData ) ) vihdoin ( closeMyFile ( ) // resurssi on aina suljettu )
Pesäkokeilu...saappaa lausunnot
Voit upottaa yhden tai useamman try...catch lausunnon toistensa sisään. Jos sisäisessä try...catch-käskyssä ei ole catch-lohkoa, tarkistetaan sisältävän try...catch-lauseen catch-lohko vastaavuus.
Tässä luvussa kuvataan JavaScript-lausekkeet ja -operaattorit, kuten osoitus, vertailu, aritmeettinen, bittikohtainen, looginen, merkkijono ja erilaiset erikoisoperaattorit.
Tässä oppaassa on myös täydellinen ja yksityiskohtainen luettelo operaattoreista ja ilmauksista.
OperaattoritJavaScriptillä on seuraavan tyyppiset operaattorit. Tässä alaosassa kuvataan kutakin tyyppiä ja annetaan tietoja niiden etusijasta toisiinsa nähden.
JavaScript tukee binääri- ja unaarioperaattoreita sekä toista erityistä kolmiosaista operaattoria, ehdollista operaattoria. Binäärioperaatio käyttää kahta operandia, yhtä ennen operaattoria ja yhtä sen jälkeen:
operandi1 operaattori operandi2Esimerkiksi: 3+4 tai x*y.
Unaarioperaatio puolestaan käyttää yhtä operandia ennen tai jälkeen operaattorin:
operaattori operandi operandi operaattoriEsimerkki: x++ tai ++x .
TehtäväoperaattoritOsoitusoperaation tuloksena osoitusoperaattorin vasemmalla puolella oleva operandi (merkki "=") asetetaan arvoon, joka on otettu oikealta operandilta. Perusosoitusoperaattori on =, joka määrittää oikean operandin arvon vasemmanpuoleiselle operandille. Siten lauseke x = y tarkoittaa, että x:lle on annettu y:n arvo.
On myös yhdistelmäosoitusoperaattoreita, joita käytetään esittämään lyhennettynä seuraavassa taulukossa kuvatut toiminnot:
Tehtävä | x = y | x = y |
Tehtävä lisäyksellä | x += y | x = x + y |
Tehtävä vähennyksellä | x -= y | x = x - y |
Tehtävä kertolaskulla | x *= y | x = x * y |
Tehtävä jakoineen | x/=y | x = x / y |
Modulotehtävä | x %= y | x = x % y |
Vasen vuorotehtävä | x>y | |
Allekirjoittamaton vuoro oikealle | x >>>= y | x = x >>> y |
Tehtävä bittikohtaisesti AND | x &= y | x = x & y |
Tehtävä bittikohtaisella XOR:lla | x^=y | x = x^y |
Tehtävä bittikohtaisesti TAI | x |= y | x = x | y |
Monimutkaisempia määrityksiä varten JavaScript sisältää rakenteen purkavan syntaksin, lausekkeen, jonka avulla voit noutaa tietoja taulukoista tai objekteista käyttämällä syntaksia, joka peilaa taulukon rakentajia ja objektiliteraaaleja.
Var foo = ["yksi", "kaksi", "kolme"]; // ilman rakennemuutosta var one = foo; var kaksi = foo; var kolme = foo; // rakennemuutoksilla var = foo;
VertailuoperaattoritVoit käyttää delete-operaattoria implisiittisesti ilmoitettujen muuttujien poistamiseen, mutta et voi käyttää sitä sellaisten muuttujien poistamiseen, jotka on ilmoitettu parametrilla var.
Poista-operaattorin käyttöönoton jälkeen elementin ominaisuus muuttuu muotoon undefined . Poista-operaattori palauttaa true, jos operaatio on mahdollista; operaattori palauttaa false, jos toimintoa ei voida suorittaa.
X = 42; var y = 43; myobj = uusi Numero(); myobj.h = 4; // luo ominaisuus h poista x; // palauttaa tosi (voit poistaa implisiittisesti ilmoitetun muuttujan) delete y; // palauttaa false (et voi poistaa muuttujaa, joka on ilmoitettu komennolla var) delete Math.PI; // palauttaa false (sisäänrakennettuja ominaisuuksia ei voi poistaa) delete myobj.h; // palauttaa tosi (voit poistaa mukautettuja ominaisuuksia) delete myobj; // palauttaa tosi (voit poistaa implisiittisesti määritellyn objektin)
Array Elementtien poistaminenTaulukon elementin poistaminen ei vaikuta taulukon pituuteen. Jos esimerkiksi poistat a, elementti a pysyy a:na ja a muuttuu määrittelemättömäksi.
Kun taulukon elementti poistetaan käyttämällä delete-operaattoria, kyseisen elementin arvo poistetaan taulukosta. Seuraavassa esimerkissä puut-elementti poistetaan käyttämällä delete-operaattoria. Puut-elementti pysyy kuitenkin osoitettavissa ja palauttaa määrittämättömän .
Var puut = new Array("punapuu", "lahti", "setri", "tammi", "vaahtera"); poistaa puita; jos (3 puissa) ( // ehto ei täyty)
Jos haluat elementin pysyvän taulukossa, mutta sillä on määrittelemätön arvo, käytä undefined-avainsanaa delete-operaattorin sijaan. Seuraava esimerkki asettaa trees-elementin arvoon undefined , mutta elementti pysyy taulukossa:
Var puut = new Array("punapuu", "lahti", "setri", "tammi", "vaahtera"); puut = määrittelemätön; if (3 puissa) ( // tämä koodilohko suoritetaan)
operaattorin tyyppiKäytä instanceof-operaattoria, kun sinun on vahvistettava objektin tyyppi ohjelman suorittamisen aikana. Esimerkiksi poikkeuksia kerättäessä voit luoda erilaisia ohjelmointisiirtymiä käsittelemään poikkeuksia käsiteltävän poikkeuksen tyypin mukaan.
Esimerkiksi seuraava koodi käyttää instanceof-operaattoria testatakseen, onko Day-objekti Date-objekti. Koska theDay on todellakin Date-objekti, ohjelma suorittaa if-käskyn sisältämän koodin.
Muutt theDay = uusi päivämäärä(1995, 12, 17); if (päivämäärän esiintymä) ( // suoritettava koodi )
Operaattorin etusijaPrioriteetti operaattorit määrittää järjestyksen, jossa ne suoritetaan, kun se arvioi lauseketta. Voit vaikuttaa operaattoreiden tärkeysjärjestykseen suluilla.
Alla olevassa taulukossa kuvataan operaattorin ensisijaisuus korkeimmasta pienimpään.
esineen omaisuutta | . |
kutsua, ilmentää esine | () Uusi |
kieltäminen, lisäys | ! ~ - + ++ -- tyhjän poiston tyyppi |
kertolasku, jako | * / % |
yhteen-, vähennys- | + - |
bitin muutos | > >>> |
vertailu, esiintyminen | < >= tapauksessa |
tasa-arvo | == != === !== |
bitti-ja | & |
bittinen yksinomainen-tai | ^ |
bit-tai | | |
boolen-ja | && |
boolen-tai | || |
ehdollinen (kolmiosainen) operaattori | ?: |
toimeksianto | = += -= *= /= %= = >>>= &= ^= |= |
pilkku | , |
Tämän taulukon tarkempi versio, joka sisältää linkkejä ja lisätietoja kullekin operaattorille, löytyy JavaScript-viittauksesta.
IlmaisutIlmaisu on mikä tahansa kelvollinen koodilohko, joka palauttaa arvon.
Käsitteellisesti on olemassa kahden tyyppisiä lausekkeita: ne, jotka antavat arvon muuttujalle, ja ne, jotka arvioivat arvon määrittämättä sitä.
Lauseke x = 7 on esimerkki ensimmäisen tyyppisestä lausekkeesta. Tämä ilmaus käyttää operaattori= antaa muuttujalle x arvon 7 . Itse lauseke on myös yhtä kuin 7.
Koodi 3 + 4 on esimerkki toisen tyyppisestä lausekkeesta. Tämä ilmaus käyttää operaattori"+" numeroiden 3 ja 4 lisäämiseen ilman, että tuloksena olevaa tulosta 7 annetaan muuttujalle.
Kaikki JavaScript-lausekkeet on jaettu seuraaviin luokkiin:
PeruslausekkeetPerusavainsanat ja peruslausekkeet JavaScriptissä.
Tämä operaattoriKäytä tätä avainsanaa osoittaaksesi nykyiseen objektiin. Yleensä tämä viittaa kutsuttavaan objektiin, joka omistaa menetelmän. Käytä tätä näin:
Tämä["omaisuudenNimi"] this.propertyName
Oletetaan, että validointitoiminto tarkistaa jonkin objektin arvon ominaisuuden; kohde on määritetty sekä tämän ominaisuuden arvon ylä- ja alarajat:
Funktio valide(obj, lowval, hival)( if ((obj.arvo< lowval) || (obj.value >hival)) alert("Virheellinen arvo!"); )
Voit kutsua validointifunktiota onChange-tapahtumakäsittelijässä jokaiselle lomakeelementille osoittamaan lomakeelementtiin seuraavan esimerkin mukaisesti:
Syötä numero väliltä 18-99:
RyhmittelyoperaattoriSulkujen ryhmittelyoperaattori () ohjaa lausekkeiden arviointiprioriteettia. Voit esimerkiksi määrittää järjestyksen uudelleen - "kerto ja jaa ennen yhteen- ja vähennyslaskua" niin, että esimerkiksi yhteenlasku tehdään ennen kertolaskua:
Var a = 1; var b = 2; var c = 3; // tavallinen järjestys a + b * c // 7 // tehty tavalliseen tapaan, joten a + (b * c) // 7 // nyt muuta järjestystä // yhteenlasku ennen kertolaskua (a + b) * c // 9 // joka vastaa seuraavaa a * c + b * c // 9
Yksinkertaistettu syntaksi taulukoiden ja generaattoreiden luomiseenYksinkertaistettu syntaksi on kokeellinen JavaScript-ominaisuus, joka voidaan lisätä tuleviin ECMAScript-versioihin. Syntaksista on 2 versiota:
Yksinkertaistettu syntaksi taulukoille. ((x of y) y) Yksinkertaistettu syntaksi generaattoreille.Yksinkertaistettuja syntakseja on monissa ohjelmointikielissä, ja niiden avulla voit nopeasti koota uuden taulukon olemassa olevan taulukon perusteella. Esimerkiksi:
) i*i ]; // [ 1, 4, 9 ] var abc = [ "A", "B", "C" ]; ; // [ "a", "b", "c" ]
Vasenkätiset ilmaisutVasemmalla olevat arvot on määritetty oikeanpuoleisille arvoille.
UusiVoit käyttää uutta operaattoria mukautetun tyyppisen objektin tai jonkin sisäänrakennetun objektin muodostamiseen. Käytä uutta operaattoria näin:
Muutt objektinNimi = uusi objektityyppi();
superAvainsanaa käytetään pääobjektin funktioiden kutsumiseen. Tämä on hyödyllistä myös luokissa, joissa esimerkiksi kutsutaan vanhemman rakentajaa.
Super(); // kutsuu vanhemman rakentajaa. super.functionOnParent();
LaajennusoperaattoriLaajennusoperaattori sallii lausekkeen laajentumisen paikkoihin, joissa on useita argumentteja (funktiokutsuille) tai useita elementtejä (taulukoita varten).
Esimerkki: Jos sinulla on tänään taulukko ja haluat luoda uuden olemassa olevalla osalla ensimmäisestä, kirjaimellinen taulukon syntaksi ei enää riitä ja sinun on kirjoitettava pakottava (ei muunnelmia) koodi käyttämällä push-yhdistelmää, liitos, concat jne. Mutta tällä operaattorilla koodi lyhenee:
Var osat = ["olkapää", "polvet"]; var lyrics = ["pää", ...osat, "ja", "varpaat"];
Operaattori toimii samalla tavalla funktiokutsujen kanssa:
Funktio f(x, y, z) ( ) var args = ; f(...args);
JavaScriptin lausekkeet ovat yhdistelmiä operandit Ja operaattorit.
Toiminnot lausekkeissa suoritetaan peräkkäin prioriteetin arvon mukaisesti (mitä korkeampi prioriteettiarvo, sitä suurempi se on). Palautettu tulos ei aina ole samaa tyyppiä kuin käsiteltävän tiedon tyyppi. Esimerkiksi vertailuoperaatioissa käytetään erityyppisiä operandeja, mutta palautustulos on aina looginen tyyppi.
Riisi. 1. Lausekerakenne JavaScriptissäOperandit ovat JavaScript-komentosarjan käsittelemiä tietoja. Operandit voivat olla yksinkertaisia tai monimutkaisia tietotyyppejä sekä muita lausekkeita.
Operaattorit ovat kielisymboleja, jotka suorittavat erilaisia toimintoja datalle. Operaattorit voidaan kirjoittaa käyttämällä välimerkkejä tai avainsanoja.
Operandien lukumäärästä riippuen erotetaan seuraavat operaattorityypit:
unary - yksi operandi on mukana operaatiossa;
binääri - operaatioon kuuluu kaksi operandia;
ternäärinen - yhdistää kolme operandia.
Lausekkeen yksinkertaisin muoto on literaali - jotain, joka arvioi itsestään, esimerkiksi numero 100, merkkijono "Hei maailma". Muuttuja voi olla myös lauseke, koska se evaluoituu sille annettuun arvoon.
Lausekkeet ja operaattorit JavaScriptissä 1. Aritmeettiset operaattoritAritmeettiset operaattorit on suunniteltu suorittamaan matemaattisia operandeja (tai muuttujia, jotka tallentavat numeerisia arvoja) ja palauttavat tuloksena numeerisen arvon.
Jos jokin operandeista on merkkijono, JavaScript-tulkki yrittää muuntaa sen numeeriseksi ja suorittaa sitten asianmukaisen toiminnon. Jos tyyppimuunnos ei ole mahdollista, tuloksena on NaN (ei numero).
+ Lisäys | Lisää numeeriset operandit. Jos yksi operandeista on merkkijono, lausekkeen tulos on merkkijono. | 12 |
- Vähennys | Vähentää toisen operandin ensimmäisestä. | 12 |
- Yksinäinen miinus | Muuntaa positiivisen luvun negatiiviseksi luvuksi ja päinvastoin. | 14 |
* Kertominen | Kertoo kaksi operandia. | 13 |
/ Division | Jakaa ensimmäisen operandin toisella. Jaon tulos voi olla joko kokonaisluku tai liukuluku. | 13 |
% Modulo-divisioona (jaon jäännös) | Laskee jäännöksen, joka saadaan ensimmäisen operandin kokonaislukujaosta toisella. Koskee sekä kokonaislukuja että liukulukuja. | 13 |
Määritysoperaattoreita käytetään arvojen määrittämiseen muuttujille. Yhdistettyjen operaattorien avulla voit tallentaa alkuperäiset ja myöhemmät arvot yhteen muuttujaan.
var a = 5; // määritä numeerinen arvo 5 muuttujalle a var b = "hello"; // tallenna merkkijono hellow muuttujaan b var m = n = z = 10; // anna muuttujille m, n, z numeerinen arvo 10 x += 10; // vastaa x = x + 10; x = 10; // vastaa x = x - 10; x * = 10; // vastaa x = x * 10; x /= 10; // vastaa x = x / 10; x % = 10; // vastaa x = x % 10; 3. Lisäys- ja vähennysoperaattoritLisäys- ja vähennysoperaatiot ovat unaarisia ja lisäävät ja vähentävät operandin arvoa yhdellä. Operandi voi olla muuttuja, taulukkoelementti tai objektiominaisuus. Useimmiten tällaisia operaatioita käytetään laskurin kasvattamiseen silmukassa.
var x = y = m = n = 5, z, s, k, l; z = ++x*2; /* laskennan tuloksena palauttaa arvon z = 12, x = 6, ts. x:n arvoa kasvatetaan ensin yhdellä ja sitten suoritetaan kertolasku */s = y++ * 2; /* laskennan tuloksena palauttaa arvon s = 10, y = 6, ts. Ensin suoritetaan kertolasku, jonka jälkeen 1:llä korotettu arvo tallennetaan muuttujaan y */ k = --m * 2; // palauttaa arvon k = 8, m = 4 l = n-- * 2; // palauttaa arvon l = 10, n = 4 4. VertailuoperaattoritVertailuoperaattoreita käytetään operandien vertailuun, lausekkeen tulos voi olla toinen kahdesta arvosta - tosi tai epätosi. Operandit voivat olla paitsi numeroita, myös merkkijonoja, loogisia arvoja ja objekteja. Vertailuja voidaan kuitenkin tehdä vain numeroille ja merkkijonoille, joten operandit, jotka eivät ole numeroita tai merkkijonoja, muunnetaan.
Jos kumpaakaan operandia ei voida onnistuneesti muuntaa numeroiksi tai merkkijonoiksi, operaattorit palauttavat aina false .
Jos molemmat operandit ovat merkkijonoja/lukuja tai ne voidaan muuntaa merkkijonoiksi/luvuiksi, niitä verrataan merkkijonoina/lukuina.
Jos yksi operandi on merkkijono/muuntaa merkkijonoksi ja toinen on luku/muuntaa luvuksi, operaattori yrittää muuntaa merkkijonon luvuksi ja suorittaa numerovertailun. Jos merkkijono ei ole luku, se muunnetaan NaN:ksi ja vertailun tulos on false .
Useimmiten vertailutoimintoja käytetään ohjelmien konttoreiden järjestämisessä.
== Tasa-arvo | Testaa kahta arvoa samalle arvolle, mikä mahdollistaa tyypin muuntamisen. Palauttaa tosi, jos operandit ovat samat, ja epätosi, jos ne ovat erilaisia. | 9 |
!= Epätasa-arvo | Palauttaa tosi, jos operandit eivät ole yhtä suuret | 9 |
=== Identiteetti | Testaa kahta operandia "identiteetin" varalta käyttämällä tiukkaa vastaavuuden määritelmää. Palauttaa tosi, jos operandit ovat yhtä suuret ilman tyyppimuunnosa. | 9 |
!== Ei-identiteetti | Suorittaa henkilöllisyyden vahvistuksen. Palauttaa tosi, jos operandit eivät ole yhtä suuret ilman tyyppimuunnosa. | 9 |
> Lisää | Palauttaa tosi, jos ensimmäinen operandi on suurempi kuin toinen, muussa tapauksessa palauttaa epätosi. | 10 |
>= Suurempi tai yhtä suuri kuin | Palauttaa tosi, jos ensimmäinen operandi ei ole pienempi kuin toinen, muussa tapauksessa palauttaa epätosi. | 10 |
Palauttaa tosi, jos ensimmäinen operandi on pienempi kuin toinen, muussa tapauksessa palauttaa epätosi. | 10 | |
Palauttaa tosi, jos ensimmäinen operandi ei ole suurempi kuin toinen, muussa tapauksessa palauttaa epätosi. | 10 |
Loogisten operaattorien avulla voit yhdistää ehtoja, jotka palauttavat Boolen arvoja. Useimmiten käytetty if-ehdollinen lauseke.
(2 < 3) && (3===3); // вернет true, так как выражения в обеих скобках дают true (x < 10 && x >0); // palauttaa arvon tosi, jos x on välillä 0-10 !false; // palauttaa tosi 6. BittioperaattoritBittioperaattorit käyttävät operandiaan 32-bittisenä ykkösten ja nollien sarjana ja palauttavat toiminnon tulosta edustavan numeerisen arvon, joka on kirjoitettu desimaalimuodossa. Kokonaislukuja pidetään operandeina; operaandin murto-osa hylätään. Bittitoimintoja voidaan käyttää esimerkiksi tiedon salaamiseen, lippujen kanssa työskentelyyn ja käyttöoikeuksien rajaamiseen.
& Bittikohtaisesti JA | Jos molemmat bitit ovat 1, tuloksena oleva bitti on 1. Muuten tulos on 0. | 8 |
| Bittikohtaisesti TAI | Jos jokin operandi sisältää 1:n kohdassa, tulos sisältää myös 1:n kyseisessä paikassa, muuten tulos kyseisessä paikassa on 0. | 6 |
^ Yksinomainen TAI | Jos yksi ja vain yksi arvo sisältää 1:n missä tahansa paikassa, tulos sisältää 1:n kyseisessä paikassa, muuten tulos kyseisessä paikassa on 0. | 7 |
~ Kieltäminen | Lausekkeen arvon binääriesitykseen suoritetaan bittikohtainen negaatio. Mikä tahansa sijainti, joka sisältää 1:n alkuperäisessä lausekkeessa, korvataan 0:lla. Mistä tahansa sijainnista, joka sisältää 0:n alkuperäisessä lausekkeessa, tulee 0. Positiiviset luvut alkavat 0:sta, negatiiviset luvusta -1, joten ~ n == -(n+1) . | 14 |
Operaattori siirtää ensimmäisen operandin bittejä vasemmalle toisen operandin asettamien bittipaikkojen lukumäärän verran. Nollia käytetään oikeanpuoleisten paikkojen täyttämiseen. Palauttaa samantyyppisen tuloksen kuin vasen operandi. | 11 | |
>> Bitti kerrallaan oikealle | Operaattori siirtää ensimmäisen operandin bittejä oikealle toisen operandin asettamien bittipaikkojen lukumäärän verran. Alueen ulkopuolelle siirretyt numerot poistetaan. Merkittävin bitti (32.) jätetään ennalleen, jotta tuloksen etumerkki säilyy. Jos ensimmäinen operandi on positiivinen, tuloksen merkittävimmät bitit täytetään nolilla; jos ensimmäinen operandi on negatiivinen, tuloksen merkittävimmät bitit täytetään ykkösillä. Arvon siirtäminen oikealle yhdellä pisteellä vastaa jakamista kahdella (jäännösosan hylkäämistä), ja arvon siirtäminen oikealle kahdella asemalla vastaa jakamista 4:llä jne. | 11 |
>>> Bittisuuntainen siirto oikealle ilman etumerkkiä | Operaattori siirtää ensimmäisen operandin bittejä oikealle toisen operandin asettamien bittipaikkojen lukumäärän verran. Nollat lisätään vasemmalle ensimmäisen operandin etumerkistä riippumatta. Alueen ulkopuolelle siirretyt numerot poistetaan. | 11 |
On olemassa useita operaattoreita, jotka työskentelevät merkkijonojen kanssa erityisillä tavoilla.
"1" + "10"; // palauttaa "110" "1" + 10; // palauttaa "110" 2 + 5 + "värikynät"; // palauttaa "7 värikynät" "Värikynät" + 2 + 5; // palauttaa "25 värikynää" "1" > "10"; // palauttaa epätosi "10" 10 ? x * 2: x / 2; // palauttaa x * 2, jos x > 10, muuten x / 2 9. Kommentit JavaScriptissäYksirivinen kommentti: Kommenttitekstiä edeltää symbolit // .