型態轉換

javascript本身是弱型別,與javac++這類的強行別不同,弱型別語言在某些情況下會自動幫你作轉換。

像是數值相減,雖然是型態是字串,但仍然可以做運算:範例

1
alert("10" - "9");

但是如果是相加的話,則會被當作一般字串相加,而不會轉成數字運算:範例

1
alert("10" + "9");

另外使用==時,字串會自動轉換成數字比對:範例

1
alert( "10" == 10 );

但如果想要真正的比對是否為一樣的值,這時可以用===範例

1
alert( "10" === 10 );

數字轉字串

數字轉字串可以直接使用.toString這個function範例

1
alert(typeof (10).toString());

當然你也可以直接用字串與數字相加,同樣也會得到你要:範例

1
alert(typeof (10 + ""))

另外.toString還有另一個功能,可以將數值轉換成其他進位的字串,例如轉成16進位:範例

1
alert((12).toString(16));

字串轉數值

字串轉數字可以透過Number來轉換:範例

1
alert(typeof Number("10"));

那同樣也可以透過parseIntparseFloat來轉換,parseInt會只留下整數,而parseFloat還會保留:範例

1
2
3
var value = "2.3";

alert("parseInt: "+ parseInt(value) + "\nparseFloat: " + parseFloat(value));

另外使用parseIntparseFloat會自動忽略字尾非數字的部分:範例

1
alert( parseInt("2a") );

parseInt還能將數值轉成其他進位,第二個參數可以設定要轉換的進位,例如轉成2進位:範例

1
alert(parseInt("100", 2));

布林(boolean)

因為布林本身就只有truefalse兩種,要轉換直接使用條件判斷即可:範例

1
alert(true? 1: 0);

比較值得注意的是,在弱型別中,true相等於1false則將等於0範例

1
alert(true == 1);

但如果數值是1以上,例如2,這時不會是成立:範例

1
alert(true == 2);

一個最容易將當前值,轉成布林方式,就是透過!!的語法,其實就是看到!反向一次,此時的值會得到truefalse,在執行一次!再轉回來:範例

1
alert( "!!2: " + (!!2) + "\n!!0: " +  (!!0) + "\n!!test: " + (!!"test") + "\n!!\"\": " + (!!"") );