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 tipov
JavaScript
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 |