javascript本身是弱型別,與java、c++這類的強行別不同,弱型別語言在某些情況下會自動幫你作轉換。
像是數值相減,雖然是型態是字串,但仍然可以做運算:範例
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")); |
那同樣也可以透過parseInt
和parseFloat
來轉換,parseInt
會只留下整數,而parseFloat
還會保留:範例
1 | var value = "2.3"; |
另外使用parseInt
或parseFloat
會自動忽略字尾非數字的部分:範例
1 | alert( parseInt("2a") ); |
parseInt
還能將數值轉成其他進位,第二個參數可以設定要轉換的進位,例如轉成2進位:範例
1 | alert(parseInt("100", 2)); |
布林(boolean)
因為布林本身就只有true
跟false
兩種,要轉換直接使用條件判斷即可:範例
1 | alert(true? 1: 0); |
比較值得注意的是,在弱型別中,true
相等於1
,false
則將等於0
:範例
1 | alert(true == 1); |
但如果數值是1
以上,例如2
,這時不會是成立:範例
1 | alert(true == 2); |
一個最容易將當前值,轉成布林方式,就是透過!!
的語法,其實就是看到!
反向一次,此時的值會得到true
或false
,在執行一次!
再轉回來:範例
1 | alert( "!!2: " + (!!2) + "\n!!0: " + (!!0) + "\n!!test: " + (!!"test") + "\n!!\"\": " + (!!"") ); |