首先,由於JavaScript是弱類型語言(弱類型的語言的東西沒有明顯的類型,他能隨著環境的不同,自動變換類型而強類型則沒這樣的規定,不同類型間的操作有嚴格定義,只有相同類型的變量才能操作,雖然系統也有一定的默認轉換,當絕沒有弱類型那麼隨便,也就是說變量在聲明時不需要指定數據類型,變量由賦值操作確定數據類型),所以在JavaScript的類型轉換中就存在了強類型語言所沒有的隱式轉換。
1.1 JavaScript中的隱式轉換(自動類型轉換)
簡單定義: 不同數據類型的數據在做運算的時候可以進行默認的數據類型的轉換。
隱式轉換通常遵循以下幾點規則:
1.數字+字符串:數字轉換為字符串。
var n1=12;//number類型 var n2="12";//string類型 console.log(n1+n2);//結果為string類型的"1212"
2.數字+布爾值:true轉換為1,false轉換為0。
var n1=12;//number類型 var n2=true;//布爾類型 console.log(n1+n2)//結果為13
3.字符串+布爾值:布爾值轉換為true或者false。
var n1="Hello";//string類型 var n2=true; console.log(n1+n2);//結果為string類型的"Hellotrue"
4.布爾值+布爾值
var n1=true; var n2=true; console.log(n1+n2);//運行結果為2;
對於上面的案例得到的結果,不確信輸出類型的小伙伴可以通過typeof()方法來查看變量的當前類型。
console.log(typeof(11));//number console.log(typeof("11"));//string console.log(typeof(true));//boolean
1.2 數據類型轉換函數
JavaScript中有隱式轉換,相對應的就會有顯式轉換,想要進行顯式轉換就需要用到下面的幾個函數:
1. toString()
---->轉換為字符串,在JavaScript中所有數據類型都可以轉換為string類型
var n1="12"; var n2=true; var n11=toString(n1); var n22=toString(n2); console.log(typeof(n11));//得到的結果為string console.log(typeof(n22));//得到的結果為string
2.parseInt()
---->解析出一個string或者number類型的整數部分,如果沒有可以轉換的部分,則返回NaN(not a number)
var n1="12"; var n2="12han"; var n3="Hello"; var n11=parseInt(n1); var n22=parseInt(n2); var n33=parseInt(n3); console.log(n11);//得到的結果為12 console.log(n22);//得到的結果為12 console.log(n33);//得到的結果為NaN
運行上面的代碼我們不難看出,變量n1 n2 n3轉換後的數據類型都是number,但是其中通過函數parseInt()得到的函數n33並不是我們認識的number類型數值,而是為NAN,這就不難看出NaN雖然不是一個數字,但是屬於數字類型,只是不能應用到普通數字的任何算法,是一個比較特殊的存在。(後面的博文中會有提到,再次不做贅述)
3.parseFloat()
---->解析出一個string的浮點數部分,如果沒有可以轉換的部分,則返回NaN(not a number)。
var n1="12.4.5"; var n2="12.4han"; var n3="Hello"; var n11=parseFloat(n1); var n22=parseFloat(n2); var n33=parseFloat(n3); console.log(n11);//得到的結果為12.4 console.log(n22);//得到的結果為12.4 console.log(n33);//得到的結果為NaN
通過上面的例子我們可以得出parseFloat()該函數的返回值確實是一個數字,但從幾個變量的縱向比較中我們不難看出該函數在遇到第二個小數點之後就不做轉換了,此處需特別注意。
以上這篇全面了解JavaScript的數據類型轉換就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。