Uvod

javascript_konverzija

JavaScript je slabo (eng. loosely) tipiziran jezik, što znači da ne zahteva da se jasno deklarišete vrsta podataka pri deklarisanju promenjive. Kod JavaScript-a se tip promenjive implicitno deklariše sa pridruživanjem odredjene vrednosti datoj promenjivoj.
Javascript je takodje jezik dinamičkih tipova jer je moguća promena tipa u toku izvršenja programa. Rezultat konverzije je uvek neka primitivna vrednost, tj. ne postoji konverzija čiji je rezultat neka složena vrednost (kao što je objekat ili funkcija). Za razliku od JavaScript-a, TypeScript (JavaScript superset jezik) je “strongly typed” jezik koji zahteva da se pri deklaraciji promenjive definiše tip i ne dozvoljava implicitno menjanje tipova.

Eksplicitna konverzija

Kada mi želimo da promenimo tip podataka neke promenjive to se zove eksplicitna (očigledna) konverzija tipova i vrši se koristeći neku od ugradjenih funkcija za konverziju:

  • Konvertovanje u “string”: “String()” ili “toString()”
  • Konvertovanje u “number”: “Number()” ili “parseFloat()” ili “parseInt()”
  • Konvertovanje u “boolean”: “Boolean()”

Implicitna (prikrivena) konverzija tipova

Implicitna (prikrivena) konverzija tipova se odnosi na konverzije koje nisu očigledne, a izvšava ih JavaScript engine u hodu kao sporedni efekat nekih drugih radnji. Implicitna konverzija se najčešće javlja kada se vrednost nekog tipa koristi na način koji automatski prouzrokuje njenu konverziju. Ovo su mogući tipovi implicitne konverzije:

Konverzija u string

Ova konverzija se javlja pri korišćenju operatora “+”, kada je jedan od operanada string. Pravilo je da se operand (element nad kojim se izvršava operacija) čiji tip nije “string” konvertuje u string a zatim se vrši spajanje dva string-a (spajanje znakovnih nizova).

Primer

Primer

Konverzija u broj

Operatori za oduzimanje (), množenje (*) i deljenje (/) namenjeni samo za rad sa brojevima, stoga jedan od operanada nije broj, dolazi do implicitne konverzija u broj. Takodje su brojevi potrebni kada se koriste operatori poredjenja (“==” ili “<" ...), stoga i tada dolazi do konverzije u broj.

a) String u broj

b) Niz u string pa u broj

Pri konverziji nizova u broj se prvo niz prebacuju u string (medjukorak), a zatim stringovi u brojeve.

c) Logička vrednost u broj

Kada se koriste operatori poredjenja (“==” ili “<" ...) pri čemu jedan od operanada je logička vrednost a drugi broj dolazi do konverzije logičke vrednosti u broj. Logička vrednost TRUE se konvertuje u broj 1, a logička vrednost FALSE se konvertuje u nulu.

NAPOMENA:
Korišćenjem unarnih operatora (+ ili -) ispred nekog podatka, operator će pokušati da ga kovertuje u broj!

Konverzija u logičku vrednost

Konverzija nekog tipa u logički tip se smatra za najkompleksniji slučaj konverzije. Najčešće implicitna konverzija u logički tip nastaje kao potreba za izračunavanje nekog uslova. Poznato je da su za izračunavanje uslova potrebne logičke vrednosti, stoga svaka vrednost koja se koristi unutar pomenutih uslova čiji tip nije logička vrednost je potrebno da se konvertuje u logičku vrednost! Navešću uslove kojima je potrebna logička vrednost za razrešenje uslova, pa zbog toga može da se javi potreba za konverzijom u logički tip:

  1. uslov u iskazu if (..)
  2. uslov (druga odredba) u petlji for (.. ; .. ; ..)
  3. uslov u petljama while(..)
  4. uslov (prva odredba) u ternarnim izrazima ..?.. :..
  5. operandi kao uslov kod logičkih operatora && ili ||:

    Kada jedan ili čak oba operanda nisu logičkog tipa pri korišćenju operatora && i || dolazi do konverzije u logički tip ali nakon razrešenja uslova ne vraćaju logičku vrednost, već vraćaju vrednost jednog od dva operanda. Šta će da bude razultat uslova se odredjuje prema sledećim pravilima:

    • Za operator || nakon konverzije “ne logičkog” tipa u logički pri razrešenju uslova važi:
      ukoliko je krajnje rešenje uslova operatora TRUE on vraća vrednost prvog operanda, a u slučaju FALSE vraća vrednost drugog operanda.
    • Za operator && nakon konverzije “ne logičkog” tipa u logički pri razrešenju uslova važi:
      ukoliko je krajnje rešenje uslova operatora TRUE vraća vrednost drugog operanda i obrnuto.

Tabela svih implicitnih konverzija

Original Vrednost Konverzija u Number Konverzija u String Konverzija u Boolean
false 0 “false” false
true 1 “true” true
0 0 “0” false
1 1 “1” true
“0” 0 “0” true
“000” 0 “000” true
“1” 1 “1” true
NaN NaN “NaN” false
Infinity Infinity “Infinity” true
-Infinity -Infinity “-Infinity” true
“” 0 “” false
“20” 20 “20” true
“twenty” NaN “twenty” true
[ ] 0 “” true
[20] 20 “20” true
[10,20] NaN “10,20” true
[“twenty”] NaN “twenty” true
[“ten”,”twenty”] NaN “ten,twenty” true
function(){} NaN “function(){}” true
{ } NaN “[object Object]” true
null 0 “null” false
undefined NaN “undefined” false

Pogledajte slične članke...

Podelite:

Ostavite komentar