E-gradiva > Računalništvo > Programiranje > Načrtovanje in razvoj spletnih aplikacij > Javascript > Izrazi

Prijava

Izrazi

Izraz je vsaka kombinacija spremenljivk, operatorjev in stavkov, ki so med seboj povezani na predpisane načine in jo lahko izračunamo. Ko izraz izračunamo, dobimo za rezultat vrednost (vrednost izraza), katere tip je odvisen od tipov posameznih operandov in uporabljenih operatorjev.

 

Primera:

tvsota=100;

(vsota>100) 

 

Vsi izrazi imajo vrednost, nekateri pa dodatno spremenijo še vrednost spremenljivke. Izraz 3 + 5 ima vrednost 8, izraz x = 10 pa vrednost 10. Pri tem drugi izraz še spremeni vrednost spremenljivke x (priredi ji vrednost 10).

Operatorji povedo, kakšno operacijo izvajamo na eni ali več spremenljivk ali konstant.

 

Primera:

            vsota+ 15;  - dve vrednosti lahko seštejemo z operatorjem  (+);

            vsota >200 - dve vrednosti lahko primerjamo z operatorjem (>);

 

Aritmetični izrazi

Aritmetični izrazi vračajo celoštevilsko ali vrednost, ki je odvisna od tipov spremenljivk ali konstant, ki nastopajo v izrazu. Če kakšen operand aritmetičnih operatorjev ni številskega tipa, ga JavaScript poskusi pretvoriti v število. Vrednosti null, false in prazen niz pretvori v število 0, vrednost true v število 1, vrednost undefined pa v število NaN. Rezultat aritmetičnega izraza je lahko tudi neskončno število (Infinity). To je običajno napaka, ki nastopi pri deljenju nekega števila z 0.

 

Aritmetični operatorji so:

+                                 - seštevanje

-                                  - odštevanje

*                                 - množenje

/                                 - deljenje

%                    - ostanek pri celoštevilčnem deljenju

 

Primer:                   

a*a + b/c

 

Izjema k zgornjemu pravilu o pretvorbi operandov v števila je pri seštevanju. Kadar je eden od operandov pri seštevanju niz, bo JavaScript tudi drugega najprej pretvoril v niz, nato pa bo oba niza staknil. Tako je vrednost izraza "123" + 4 enaka "1234", in ne 127.

 

<!DOCTYPEhtml PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    <html xmlns = "http://www.w3.org/1999/xhtml">

       <head>

          <title> Program za seštevanje dveh števil </title>

          <script type = "text/javascript">

                        <!--

             var prvo,   // prvi niz znakov, ki ga vnese uporabnik

                 drugo,  // drugi niz znakov, ki ga vnese uporabnik

                 stevilo1,       // prvo število

                 stevilo2,       // drugo število

                 vsota;           // vsota števil

             // preberi prvo število, ki ga vnese uporabnik kot niz znakov

             prvo =  window.prompt( "Vnesi prvo število", "0" );

             // preberi drugo število, ki ga vnese uporabnik kot niz znakov

             drugo =  window.prompt( "Vnesi drugo število", "0" );

            // prevedi niza znakov v cela števila

             stevilo1 = parseInt( prvo );

             stevilo2 = parseInt( drugo );


Seštevanje dveh števil, ki jih vnesemo kot niza znakov.

            // seštej števili

             vsota = stevilo1 + stevilo2;

            // izpiši rezultat

             document.writeln( "<h1>Vsota je: " + vsota + "</h1>" );

             // -->      

            </script>

      </head>

       <body>

          <p>Pritisni Refresh (ali Reload), da zaženeš skripto še enkrat</p>

       </body>

    </html>

Metoda paseInt

Metoda parseInt pretvori niz znakov v celo število. Če niz vsebuje decimalno piko, mu odreže  decimalni del (npr. če vnesemo 12.73 je rezultat 12). Če vnesemo niz, ki ni numerična vrednost, vrne metoda vrednost NaN (neštevilo).

 

Nasvet

Vsako spremenljivko, ki uporabnik vnese testirajte, če je pravega tipa in ima vrednost v območju kot ga zahtevamo za pravilno izvedbo skripte. Če naprimer od uporabnika zahtevamo, da vnese svojo višino, je njegova višina lahko v mejah od 1 do 250 cm. Uporabnik nikakor ne sme vnesti negativnega števila ali niza znakov, iz katerega se ne da tvoriti števila.

 

Nasvet

Preden izvedete operacijo deljenja dveh operandov, testirajte, če ni drugi operand enak 0. V Javascriptu se zaradi te logične napake skripta ne bo izvedla.

 

Relacijski izrazi

Relcijski izraz je sestavljen iz dveh operandov in relacijskega operatorja. Relacijski  operator primerja vrednosti svojih operandov in vrne logično vrednost true ali false, odvisno od rezultata primerjave. Operanda sta lahko poljubna izraza. Če sta enakega tipa, je false manjše od true, števila primerja po velikosti, nize pa leksikografsko (po abecedi).

 

Relacijski operatorji so:

<         - manjši

>         - večji

<=       - manjši ali enak

>=       - večji ali enak

==       - je enak

===     - je enak po vrednosti in tipu

!=        - ni enak

!==      - ni enak po vrednosti in tipu

 

Primer:                 

stevilo < 1

 

Slovnične napake pri relacijskih operatorjih

Znotraj operatorjev <= ,>=, ==, ===,           != in !== ne sme biti praznih mest. Če damo med znake za operator prazno mesto, je to slovnična napaka, ki povzroči, da se skripta ne izvede.

 

Logični izrazi

Z uporabo logičnih operatorjev sestavljamo bolj zapletene primerjave. Operandi so običajno logične vrednosti, oziroma izrazi, katerih vrednosti so true ali false. Preverimo lahko, ali sta oba operanda enaka true (logični in), ali je vsaj en operand enak true (logični ali), ali pa spremenimo veljavnost operanda (logična negacija).

            Logični operatorji so:

        - negacija

&&     - logični in

||       - logični ali

 

Primer:

(stevilo >=1) && (stevilo <=1000)

 

Operandi pa niso nujno samo logične vrednosti. Operator && vrne vrednost levega operanda, če jo je mogoče pretvoriti v false (take vrednosti so na primer število 0, prazen niz, null in undefined), sicer pa vrne vrednost desnega operanda. Operator || vrne vrednost levega operanda, če jo je mogoče pretvoriti v true, sicer pa vrne vrednost desnega operanda. Operator ! pa vrne false, če je vrednost njegovega edinega operanda mogoče pretvoriti v true, sicer pa vrne true.

Če je vrednost levega operanda operatorja && enaka false, bo vrednost izraza tudi false, ne glede na vrednost desnega operanda. JavaScript zato v tem primeru vrednosti desnega operanda sploh ne izračuna. Podobno velja za operator || v primeru, ko je vrednost njegovega levega operanda enaka true.

 

Prefiksni izrazi

Operatorji:

++       - prištevanje 1 (++i enako kot i=i+1)

--         - odštevanje 1 (--i enako kot i=i-1)

+=       - prištevanje (s +=a  enako kot s=s+a) 

*=        - množenje (p *=a  enako kot p=p*a) 

-=        - odštevanje (r -=a  enako kot r=r-a)

 

Primer:  ++i,  vsota +=a

 

Če v izrazu uporabimo prefiksni operator ++ ali –- (npr. ++i, --i), se vrednost spremenljivke poveča oziroma zmanjša preden se izraz izračuna.

 

Postfiksni izrazi

Operatorji:

++       - prištevanje 1 (i++ enako kot i=i+1)

--         - odštevanje 1 (i-- enako kot i=i-1)

 

            Če v izrazu uporabimo posfiksni operator ++ ali –- (npr. i++, i--), se vrednost spremenljivke poveča zatem, ko se izraz izračuna.

 

Napotek za hitrejše izvajanje

Če je le možno uporabljajte prefiksne in postfiksne izraze, saj se pri teh vsaka spremenljivka samo enkrat preveri. Na primer i++ lahko zapišemo kot i=i+1. Oba izraza data enak rezultat. Drugi način zapisa izraza zahteva dvakratno preverjanje spremenljivke i.

 

Bitni operatorji

Bitni operatorji obravnavajo svoje operande kot 32 bitna cela števila. Če kateri od operandov ni celo število, ga JavaScript ustrezno pretvori. Pri tem realnemu številu odreže števke za decimalno piko, niz predela v število (če mu ne uspe, ga obravnava kot število 0), vrednosti undefined, null in false predela v število 0, true pa v število 1. Vrednost, ki jo dobimo kot rezultat bitne operacije, je vedno številska.

Bitni operatorji so:

x & y                          bitni in

x | y                             bitni ali

x ^ y               bitni ekskluzivni ali

~x                                           bitna negacija

x << y             pomik bitov števila x za y mest v levo

x >> y             pomik bitov števila x za y mest v desno

x >>> y                       pomik bitov števila x za y mest v desno

 

Rezultati operacij &, | in ^ so 32 bitna cela števila, ki imajo na 1 nastavljene natanko tiste bite, ki so bili 1 pri obeh operandih, vsaj enem operandu oziroma natanko enem od operandov. Rezultat operacije ~ dobimo tako, da spremenimo vse bite njegovega edinega operanda.

Med bitne operatorje spadajo tudi operatorji za pomik, ki pomaknejo bite levega operanda za določeno število mest (desni operand) v levo ali desno. Operator << je pomik v levo. Pri tem izgubimo nekaj bitov na levi (toliko, kolikor je dolg pomik), nova mesta na desni strani pa se napolnijo z ničlami. Operatorja za pomik v desno sta kar dva. Pri obeh izgubimo nekaj bitov na desni (toliko, kolikor je dolg pomik), razlikujeta pa se načinu, kako se napolnijo nova mesti na levi. Operator >> nova mesta napolni z bitom, ki je bil najbolj levi že pred pomikom, operator >>> pa z ničlami.


Prireditveni izrazi

Prireditveni izraz sestavljajo spremenljivka, prireditveni operator “=“ in izraz. Prireditveni operator  “=“spremenljivki na levi strani priredi vrednost izraza na desni strani operatorja. Če napišemo x = y+3, bomo spremenljivki x priredili vrednost izraza, ki je vsota vrednosti spremenljivke y in konstante 3.

Vrednost prireditvenega izraza je enaka vrednosti izraza, ki ga prirejamo spremenljivki. Ker ima svojo vrednost, lahko prireditveni izraz uporabimo kot del drugega izraza, torej tudi na desni strani novega prireditvenega izraza.

 

            Primer:

            obseg = 2*PI*polmer;

 

Logična napaka

Ne zamenjajte operatorjev = in ==. Prvi pomeni prireditev vrednosti izraza spremenljivki, drugi pa primerja vrednosti operandov, če imata enaki vrednosti.

 

Posebni operatorji

 Posebne operatorje bomo podrobneje opisali kasneje, uporabjajo se v pogojnih stavkih in pri objektih. Ti operatorji so:

x ? y : z           pogojni operator

x , y     vejični operator

delete x 

x in y 

x instanceof y 

new x 

typeof x 

void x 

x.y 

x[y] 

x()

 

Prioriteta izvajanja operacij v izrazih

 

. []

() new

! ~ + - ++ -- typeof void delete

 * / %

+ -

<< >> >>>

< <= > >= in instanceof

 == != === !==

&

^

|

&&

||

?:

= += -= *= /= %= <<= >>= >>>= &= |= ^=

,

 

Kadar v enem izrazu uporabimo več operatorjev, je dobro vedeti, kateri operator bo imel prednost pri izračunu vrednosti izraza. V seznamu levo so našteti vsi operatorji glede na svojo prioriteto. Operatorji z višjo prioriteto so višje v seznamu.  

 

Nasveta

Med operatorji in operandi ali oklepaji pustite prazno mesto, saj je takšna koda bolj berljiva.

Uporabljajte oklepaje, če niste zagotovo prepričani ali je prioriteta izvajanja operatorjev v izrazu ustrezna.