Načrtovanje in razvoj spletnih aplikacij

Pretvarjanje podatkovnih tipov v JavaScriptu

JavaScript pozna naslednje podatkovne tipe:

  • 5 podatkovnih tipov, v katrih hrani vrednosti:
    • string (niz)
    • number (število)
    • boolean (logični tip)
    • object (objekt)
    • function (funkcija)
  • 3 različne tipe objektov:
    • Object (Objekt)
    • Date (Datum)
    • Array (Polje)
  • 2 tipa podatkov, ki nimata vrednosti:
    • null (prazen tip)
    • undefined (nedoločen tip)

Operator typeof

Operator typeof vrne podatkovni tip spremenljivke JavaScript.

typeof "Janez"				//vrne niz
typeof 2.34				//vrne število
typeof NaN 				//vrne število
typeof null				//vrne objekt
typeof true				//vrne logični tip
typeof [1,2,3,4] 			//vrne objekt
typeof {ime:'Janez', starost:24} 	//vrne objekt
typeof new Date 			//vrne objekt
typeof function () {}			//vrne funkcijo
typeof stIme				//vrne nedoločen tip, če stIme ni definiran

Pretvarjanje podatkovnih tipovJavaScript

JavaScript spremenljivko pretvorimo v novo spremenljivko drugega podatkovnega tipa tako, da:

  • uporabimo JavaScript funkcijo ali pa
  • pretvorbo izvede JavaScript sam avtomatsko

Pretvarjanje števil v nize

Globalna metoda String() prevede števila v nize. Pri tem lahko uporabimo katerokoli obliko števil:

String(x)	  //vrne niz števila spremenljivke x
String(987)	  //vrne niz števila konstante 987
String(10 + 20)	  //vrne niz števila po izračunu izraza

Števila v nize lahko prevedemo tudi z metodo toString():

x.toString()		//vrne niz števila spremenljivke x
(123).toString()	//vrne niz števila konstante 987
(10 + 20).toString()	//vrne niz števila po izračunu izraza 

Pretvarjanje logičnih tipov v nize

Logične tipe Boolean v JavaScriptu v stringe prevedemo z globalno metodo String() ali pa z metodo toString():

String(false)        //vrne "false"
String(true)         //vrne "true"

false.toString()     //vrne "false"
true.toString()      //vrne "true"

Pretvarjanje datumov v nize

Datume v JavaScriptu v stringe prevedemo z globalno metodo String() ali pa z metodo toString():

document.getElementById("primer1").innerHTML = String(Date()) + "<br />" + Date().toString();

Pretvarjanje nizov v števila

Nize v števila prevedemo z globalno metodo Number(). Tako niz "1.23" prevedemo v število 1.23, prazen niz " " prevedemo v 0, vse kar ni število ali prazen niz pa se prevede v NaN (ni število).

Number("1.23")    //vrne 1.23
Number(" ")      //vrne 0 
Number("")       //vrne 0
Number("1,23")    //vrne NaN
Number("12 34")   //vrne NaN
Number("st123")   //vrne NaN

Za pretvorbo nizov v števila lahko uporabimo tudi metodi parseFloat() in parseInt(). Več o tem si lahko ogledate v poglavju Number.

Nize v število lahko pretvorimo tudi z operatorjem +, ki ga postavimo pred število:

var y = "17"		//y je niz
var x = + y		//x je število

Če spremenljivke ni mogoče pretvoriti v število, le ta prav tako postane število NaN:

var y = "Janez"		//y je niz
var x = + y		//x je število NaN

Pretvarjanje logičnih tipov v števila

Logične tipe Boolean v JavaScriptu v števila prevedemo z globalno metodo Number():

Number(true)	//vrne 1
Number(false)	//vrne 0

Pretvarjanje datumov v števila

Datume v števila prevedemo z globalno metodo Number()ali z metodo getTime(). Obe metodi vrneta enak rezultat:

var d = new Date();

Number(d);
d.getTime();

Avtomatska pretvorba podatkovnih tipov

V primeru da JavaScript pri izvajanju naleti na napačen podatkovni tip, ga poskuša samodejno pretvoriti v pravilen podatkovni tip. Pri tem pa rezultat ni vedno tisto, kar se pričakuje.

3 + null;	//vrne 3	ker se null pretvori v 0
"3" + null;	//vrne "3null"	ker se null pretvori v niz "null"
"3" + 1		//vrne "31"	ker se število 1 pretvori v niz "1"
"3" - 1		//vrne 2	ker se niz "3" pretvori v število 5

Tabela pretvorbe podatkovnih tipov JavaScript

Tabela prikazuje rezultate pretvorbe različnih vrednosti spremenljivk JavaScript:

Vrednost Pretvorba v število Pretvorba v niz Pretvorba v logični tip
true 1 "true" true
false 0 "false" false
1 1 "1" true
0 0 "0" false
"1" 1 "1" true
"0" 0 "0" true
NaN NaN "NaN" false
Infinity Infinity "Infinity" true
"" 0 "" false
"50" 50 "50" true
"sto" NaN "sto" true
null 0 "null" false
undefined NaN "undefined" false
[10,50] NaN "10,50" true
function(){ } NaN "function(){ }" true
{ } NaN "[object Object]" true