prethodna      sadržaj       slijedeća     
Vodič za core JavaScript 1.5 



Poglavlje 2   Vrijednosti, varijable i podaci


Ovdje su objašnjene vrijednosti koje JavaScript prepoznaje te osnovne gradivne blokove JavaScript izraza: varijabli, konstanti i podataka.

Tu ćete naći:



Vrijednosti

JavaScript prepoznaje slijedeće vrste vrijednosti:

Ovaj relativno mali skup vrijednosti, odnosno vrste podataka, omogućava vam da izvodite vrlo korisne funkcije sa vašim aplikacijama. Ne postoji gotovo nikakva razlika između integera i realnih brojeva. Takođe ne postoji posebna vrsta podatka za datum. Pa ipak, možete upotrijebiti  Date objekt i njegove metode kako bi baratali s datumom.

Objekti i funkcije su naredni osnovni elementi jezika. Objekte možete zamisliti kao imenovane spremnike za vrijednosti, a funkcije kao procedure koje vaša skripta može izvršiti.


Pretvorba vrste podataka

JavaScript je dinamički pisani jezik. To znači da ne morate odrediti vrstu podatka za varijablu koju deklarirate. Vrsta podatka se pretvara automatski prema potrebi za vrijeme izvršavanja skripte. Tako npr. možete definirati varijablu na slijedeći način:

var answer = 42

I kasnije, možete istoj varijabli pridružiti string vrijednost, npr.:

answer = "Thanks for all the fish..."

Ovakav način pridruživanja ne uzrokuje grešku zbog dinamičkog pisanja u JavaScriptu.

U izrazima koji sadrže brojevne i string vrijednosti sa + operatorom, JavaScript pretvara brojevne vrijednosti u string. Npr., razmotrite slijedeći izraz:

x = "Odgovor je " + 42 // daje "Odgovor je 42"
y = 42 + " je odgovor" // daje "42 je odgovor"

Kod naredbi koje sadrže neke druge operatore, JavaScript ne pretvara brojevne vrijednosti u stringove. Na primjer:

"37" - 7 // daje 30
"37" + 7 // daje 377



Varijable



Varijable se koriste kao simbolički nazivi za vrijednosti u vašim aplikacijama. Nazivi varijabli, zvanih identifiers, podložni su određenim pravilima.

JavaScript identifier mora početi slovom,sa underscore-om ( _ ) ili dollar znakom ( $ ). Naredni znakovi mogu biti brojevi (0-9). JavaScript je osjetljiv na mala i velika slova.

Od JavaScript 1.5 pa nadalje možete koristiti ISO 8859-1 ili Unicode znakove kao npr. å i ü za identifier-e. Takođe, mogu se koristiti \uXXXX Unicode escape sequences ,čiji je popis na stranici 34, kao znakovi za identifier-e.

Evo nekih pravilnih primjera:  Number_hits, temp99_name.


Deklariranje varijabli

Varijable možete deklarirati na 2 načina:


Procjena varijabli

Varijabla ili niz kojoj se nije pridružila neka vrijednost dobiva vrijednost undefined (nedefinirano) . Rezultat procjene nepridružene varijable ovisi o načinu deklariranja:

Slijedeći code demonstrira procjenu za nepridružene varijable:

function f1() {
   return y - 2;
}
f1() //stvara runtime error

function f2() {
   return var y - 2;
}
f2() //daje NaN

Može se koristiti undefined za određivanje da li varijabla ima vrijednost. U narednom kodu varijabli input nije pridružena nikakva vrijednost, pa if naredba daje true.

var input;
if(input === undefined){
   doThis();
} else {
   doThat();
}

Nedefinirane varijable se ponašaju kao false (laž) ukoliko se koriste kao Boolean vrijdnosti. Npr., slijedeći code izvršava funkciju myFunction  jer element niza nije definiran:

myArray=new Array()
if (!myArray[0])
   myFunction()

Kad procjenjujete null varijablu, null vrijednost ponaša se kao 0 kod brojeva i kao false kod Boolean-a. Na primjer:

var n = null
n * 32 //returns 0


Opseg varijabli

Kada postavljate identifier varijable izvan funkcije, tada je to global   varijabla, jer je dostupna bilo gdje u dokumentu. Kada deklarirate varijablu unutar funkcije, onda je to local varijabla, jer je dostupna samo unutar te funkcije.

Za definiranje global varijable nije obavezno koristiti var. Ali zato morate koristiti var pri deklariranju verijable unutar funkcije.

Može se pristupiti global varijablama deklariranim u jednom prozoru ili okviru iz drugog prozora ili okvira naznačavajuči naziv prozora ili okvira. Npr., ako je varijabla phoneNumber deklarirana u FRAMESET dokumentut, možete koristiti tu varijablu u child frame-u (okviru) kao parent.phoneNumber .



Konstante



Pomoću const ključne riječi mogu se stvarati read-only konstante. Sintaxa identifier konstante je ista kao za identifier varijable: mora početi sa slovom ili underscore-om i može imati alphabetske, numeričke ili underscore znakove.

const prefix = '212';

Konstanta ne može mijenjati vrijednost kroz različita pridruživanja ili da se ponovo deklarira dok se skripta izvršava.

Pravila za konstante ista su kao za varijable, osim što se const ključna riječ uvijek mora koristiti pa čak i za global konstante. Ako se ključna riječ ispusti tada se identifier ponaša kao var.

Konstanta ne smije imati isti naziv kao funkcija ili varijabla. Na primjer:

//OVO UZROKUJE GREŠKU
function f{};
const f = 5;

//OVO TAKOĐE UZROKUJE GREšKU
function f{
const g=5;
var g;

//naredbe

}



Podaci



Podaci se koriste za prikaz vrijednosti u JavaScriptu. To su konstantne vrijednosti, a ne varijable koje podatkovno (slovčano) unosite u vašu skriptu. Upoznajte slijedeće vrste podataka:


Niz podaci

Niz podaci su popis nijednog ili više izraza od kojih svaki izraz predstavlja element niza. Zatvoreni su u uglatu zagradu ([]). Kada stvarate niz upotrebom array podatka, niz ima određene vrijednosti za elemente, a dužina mu je određena brojem argumenata.

Naredni primjer prikazuje niz coffees sa tri elementa i dužinom tri:

coffees = ["French Roast", "Columbian", "Kona"]

Uočite Niz podatak je vrsta objekt inicijalizatora. Vidi  "Upotreba objekt Inicijalizatora"  str.  93.

Ako je niz napravljen za upotrebu podataka u top-level skripti, JavaScript interpretira svaki put kada procjenjuje izraz koji sadrži niz podatak. Nadalje, podatak upotrijebljen u funkciji se stvara svaki put kada je funkcija pozvana.

Niz podaci su takođe i niz objekti. Vidi "Niz objekt" str. 100 .


Extra zarezi u niz podacima

Nije potrebno definirati sve elemente u nizu. Ako se stave dva zareza u red, niz je napravljen s prazninom za neodređene elemente. U narednom primjeru je fish niz:

fish = ["Lion", , "Angel"]

Ovaj niz ima dva elementa sa vrijednostima i jedan prazan ( fish[0] je "Lion", fish[1] je nedefiniran, i fish[2] je "Angel"):

Ako ostavimo zarez sam na kraju niza, zarez se zanemaruje. U slijedećem primjeru, duljina niza je tri. Ne postoji myList[3]. Ostali zarezi pokazuju na nove elemente.

myList = ['home', , 'school', ];

U slijedećem primjeru, duljina niza je četiri te myList[0] i myList[2] nedostaju.

myList = [ , 'home', , 'school'];

U slijedećem primjeru, duljina niza je četiri te myList[1] i myList[3] nedostaju.

myList = ['home', , 'school', , ];


Boolean podaci

Boolean tip ima dvije podatkovne vrijednosti: true i false .

Ne miješajte prvobitne Boolean vrijednosti true i false sa true i false u Boolean objektu. Boolean objekt je omotač oko prvobitnog Boolean tipa podatka. Vidi  "Boolean objekt" str. 103 .


Floating-Point podaci

Floating-point podaci mogu imati slijedeće dijelove:

Exponent je "e" ili "E" iza kojeg slijedi integer i može imati predznak (ispred je "+" ili "-"). Floating-point podatak mora imati najmanje jednu znamenku te decimalnu točku ili "e" (tj. "E").

Evo primjera floating-point literala:  3.1415, -3.1E12, .1e12, i 2E-12.


Integeri (cjelobrojne vrijednosti)

Integeri se mogu prikazati decimalno (baza 10), hexadecimalo (baza 16), i octalno (baza 8). Decimalni integer podatak sastoji se od niza znameniki bez početne nule 0 (zero). Vodeća nula 0 (zero) kod integer podatka pokazuje da se radi o octalnom broju, a ako je ispred 0x (ili 0X) onda se radi o hexadecimalnom. Hexadecimalni integeri uključuju (0-9) te slova a-f i A-F. Octalni integeri uključuju samo brojeve 0-7.

Octalni integer podaci su zastarjeli i maknuti su iz ECMA-262, Edition 3 standarda. JavaScript 1.5 još ih uvijek podržava.

Evo nekih primjera: 42, 0xFFF, i -345.


Objekt podaci

Objekt podatak je niz nijednog ili više parova naziva svojstava i pridruženih vrijednosti objektu, a zatvoreni su u vitičastu zagradu ({}). Ne biste trebali koristiti object podatak na početku izraza. To će prouzročiti grešku ili se neće ponašati prema očekivanom jer će se  { interpretirati kao početak bloka.

Nadalje je prikazan jedan primjer. Prvi element car objekta definira svojstvo, myCar. Drugi element, getCar svojstvo, poziva funkciju ( CarTypes("Honda")). Treći element, specijalno svojstvo, koristi postojeću varijablu (Sales ).

var Sales = "Toyota";

function CarTypes(name) {
   if(name == "Honda")
      return name;
   else
      return "Sorry, we don't sell " + name + ".";
}

car = {myCar: "Saturn", getCar: CarTypes("Honda"), special: Sales}

document.write(car.myCar); // Saturn
document.write(car.getCar); // Honda
document.write(car.special); // Toyota

Nadalje, možete upotrijebiti brojevni ili string podatak za imenovanje svojstva ili ugnjezditi objekt unutar drugog. Slijedeći primjer koristi ove mogućnosti.

car = {manyCars: {a: "Saab", b: "Jeep"}, 7: "Mazda"}

document.write(car.manyCars.b); // Jeep
document.write(car[7]); // Mazda


String (znakovni) podaci

String podatak je nijedan ili više znakova zatvorenih u duple ( ") ili single ( ') navodne znake. String mora biti razdvojen navodnicima istog tipa; tj., bilo da su oboje duple ili oboje single.Pogledajte primjere string podatka:

Možete pozvati bilo koju metodu string objekta kao vrijednost string podatka —JavaScript automatski pretvara string podatak u privremeni string objekt, poziva metodu, a zatim izbacuje privremeni string objekt. Takođe, može se koristiti String.length svojstvo u string podatku.

Trebate koristiti string podatke sve dok točno ne zatrebate string objekt. Vidi  "String objekt" str. 110 .


Upotreba specijalnih znakova u stringu

Kao dodatak običnim znakovima mogu se koristiti posebni znakovi u stringu, kao što je prikazano u slijedećem primjeru.

"prvi red \n drugi red"

Naredna tablica pokazuje specijalne znakove koje možete koristiti kod JavaScript stringova.


Tablica 2.1    JavaScript specijalni znakovi



Znak

Značenje

\b

 

Backspace  

\f

 

Form feed  

\n

 

New line  

\r

 

Carriage return  

\t

 

Tab  

\v

 

Vertical tab  

\'

 

Apostrophe or single quote  

\"

 

Double quote  

\\

 

Backslash znak (\).  

\XXX

 

Znak sa Latin-1 enkodiranjem određen sa do 3 octal znamenke XXX između 0 i 377. Npr., \251 je oktalni niz za copyright simbol.  

\xXX

 

Znak sa Latin-1 enkodiranjem određen sa 2 hexadecimalne znamenke XX između 00 i FF.Npr., \xA9 je hexadecimalni niz za copyright simbol.  

\uXXXX

 

Unicode znak određen sa 4 hexadecimalne znamenke XXXX . Npr., \u00A9 je Unicode niz za copyright simbol. Vidi Unicode escape nizovi.  


Escaping  znakovi (znakovi koji sprečavaju interpretiranje)

Kod znakova koji nisu u Tablici 2.1, znak backslash ispred se ignorira. Ovo je zastarjelo te se ne treba koristiti.

Mogu se umetnuti navodnici unutar stringa sa backslash-om ispred. Ovo je tzv. escaping navodnika. Npr.,

var quote = "On čita knjigu \"Stepski vuk\" od H. Hesea"
document.write(quote)

Rezultat je

On čita knjigu "Stepski vuk" od H. Hesea

Da bi dobili znak backslash unutar stringa, mora se izvršiti escape backslash znaka. Npr., da odredimo put do fajla c:\temp upotrijebite ovo  u stringu:

var home = "c:\\temp"



Unicode



Unicode je univerzalan standard za kodiranje znakova pri razmjeni i prikazu važnijih jezika. Pokriva jezike Amerike, Europe, Srednjeg Istoka, Afrike, Indije, Azije i Pacifika, a takođe i povijesne zapise tehničke simbole. Unicode omogućuje razmjenu, procesuiranje i prikaz višejezičnih textova kao i najčeščih tehničkih i matematičkih simbola. Svi moderni i arhaični textovi još nisu podržani.

Unicode je napravljen nakon ASCII (American Standard Code for Information Interchange) skupa znakova. Koristi numeričke vrijednosti i naziv za svaki znak. Enkodiranje znakova određuje identitet znaka i njegovu numeričku vrijednost (smještaj code-a), a takođe i prikaz ove vrijednosti u bitima. 16-bitna numerička vrijednost (code vrijednost) je definirana sa hexadecimalnim brojem i prefixom U, npr., U+0041 predstavlja slovo A. Jedinstveni naziv za ovo je LATINSKO VELIKO SLOVO A.

JavaScript verzije prije 1.3. Unicode nije podržan u verzijama JavaScripta prije 1.3.


Unicode kompatibilnost s ASCII i ISO

Unicode je kompatibilan sa ASCII znakovima i podržavaju ga mnogi progrmi. Prvih 128 Unicode znakova odgovaraju ASCII znakovima i imaju istu byte vrijednost. Unicode znakovi od U+0020 do U+007E su ekvivalentni ASCII znakovima od 0x20 do 0x7E. Za razliku od ASCII, koji sadrži latinsku abecedu te koristi 7-bitni skup znakova, Unicode koristi 16-bitne vrijednosti. To omgućava desetke tisuća znakova. Takođe podržava mehanizam za proširenje, UTF-16, koji dozvoljava enkodiranje milijun znakova upotrebom 16-bitnih uparenih znakova.

Unicode je potpuno kompatibilan i s International Standard ISO/IEC 10646-1; 1993, koji je podskup od ISO 10646, te podržava ISO UCS-2 (Universal Character Set) koji koristi dva okteta (dva bajta ili 16 bita).

JavaScript i Navigator Unicode podrška znači da možete koristiti ne-Latinske, internacionalne i lokalne znakove, plus specjialne tehničke simbole u JavaScript programima. Mogu se koristiti ne-ASCII Unicode znakovi u komentarima, string podacima, identifikatorima te regularnim izrazima.


Unicode escape nizovi

Mogu se koristiti Unicode escape nizovi u string podacima, regularbnim izrazima i identifikatorima. Escape niz sastoji se od 6 ASCII znakova: \u i četveroznamenkastog hexadecimalnog broja.Npr., \u00A9 predstavlja copyright simbol. Svaki Unicode escape niz u JavaScriptu se interpretira kao samo jedan znak.

Naredni code daje copyright simbol i string "Netscape Communications".

x="\u00A9 Netscape Communications"

U tablici ispod naći ćete najčešće korištene specijalne znakove i njihove Unicode vrijednosti.


Tablica 2.2    Unicode vrijednosti za specijalne znakove



kategorija

Unicode vrijednost

naziv

naziv formata

White space values  

\u0009  

Tab  

<TAB>  

 

\u000B  

Vertical Tab  

<VT>  

 

\u000C  

Form Feed  

<FF>  

 

\u0020  

Space  

<SP>  

Line terminator values  

\u000A  

Line Feed  

<LF>  

 

\u000D  

Carriage Return  

<CR>  

Additional Unicode escape sequence values  

\u0008  

Backspace  

<BS>  

 

\u0009  

Horizontal Tab  

<HT>  

 

\u0022  

Double Quote  

"  

 

\u0027  

Single Quote  

'  

 

\u005C  

Backslash  

\  


Prikaz znakova sa Unicode

Da bi znakovi bili valjano prikazani klijenti kao što su Netscape Navigator 4.x ili Netscape 6 moraju podržavati Unicode. Osim toga, odgovarajući Unicode font mora se nalaziti na klijentu. Često, Unicode fontovi ne prikazuju sve Unicode znakove. Neke platforme, kao npr. Windows 95, imaju djelomičnu podršku za Unicode.

Da bi primili ne-ASCII znakovni ulaz, klijent mora slati ulaz kao Unicode. Koristeći standardnu tipkovnicu,klijent ne može lako unijeti dodatne znakove podržane sa Unicode. Ponekad jedini način da se unese Unicode znak je da se koristi Unicode escape niz.

Za više informacija o Unicode-u, pogledajte Unicode Consortium Web site  i Unicode Standard, Verzija 2.0, izdao Addison-Wesley, 1996.


prethodna      sadržaj      slijedeća     
Copyright © 2000 Netscape Communications Corp. All rights reserved.

Posljednje izmjene Rujan 28, 2000