詳解Javascript數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則
一、數(shù)據(jù)類型
5種基本數(shù)據(jù)類型:Null/Undefined/String/Boolean/Number
1種復(fù)雜數(shù)據(jù)類型:Object
二、數(shù)據(jù)類型檢測
傳送門《JS中檢測數(shù)據(jù)類型的幾種方式及優(yōu)缺點小結(jié)》
1、typeof
2、instanceof/constructor
3、Object.prototype.toString.call(value)
4、Object.prototype.toString
三、數(shù)據(jù)類型轉(zhuǎn)換
JS內(nèi)部提供不同數(shù)據(jù)類型的自動轉(zhuǎn)換機制,在某處預(yù)期為某種類型而不是某種類型時,就會自動轉(zhuǎn)換為預(yù)期類型,這就是我們常說的隱式轉(zhuǎn)換。
1、強制類型轉(zhuǎn)換
在了解隱式轉(zhuǎn)換的規(guī)則前先來看看強制類型轉(zhuǎn)換,強制類型轉(zhuǎn)換主要是用Boolean()/String()/Number()將各類型的數(shù)據(jù)轉(zhuǎn)換成布爾、字符串、數(shù)值型數(shù)據(jù)。
Boolean() 函數(shù)
當(dāng)要轉(zhuǎn)換的值是至少有一個字符的字符串、非 0 數(shù)字或?qū)ο髸r,Boolean() 函數(shù)將返回 true。如果該值是空字符串、數(shù)字 0、undefined 或 null,它將返回 false。
var b1 = Boolean(""); //false - 空字符串
var b2 = Boolean("hello"); //true - 非空字符串
var b1 = Boolean(50); //true - 非零數(shù)字
var b1 = Boolean(null); //false - null
var b1 = Boolean(0); //false - 零
var b1 = Boolean(new object()); //true - 對象
Number() 函數(shù)
Number() 函數(shù)的強制類型轉(zhuǎn)換與 parseInt() 和 parseFloat() 方法的處理方式相似,只是它轉(zhuǎn)換的是整個值,而不是部分值。
parseInt() 和 parseFloat() 方法只轉(zhuǎn)換第一個無效字符之前的字符串,因此 "1.2.3" 將分別被轉(zhuǎn)換為 "1" 和 "1.2"。
用 Number() 進行強制類型轉(zhuǎn)換,"1.2.3" 將返回 NaN,因為整個字符串值不能轉(zhuǎn)換成數(shù)字。如果字符串值能被完整地轉(zhuǎn)換,Number() 將判斷是調(diào)用 parseInt() 方法還是 parseFloat() 方法。

String() 函數(shù)
最后一種強制類型轉(zhuǎn)換方法 String() 是最簡單的,因為它可把任何值轉(zhuǎn)換成字符串。
要執(zhí)行這種強制類型轉(zhuǎn)換,只需要調(diào)用作為參數(shù)傳遞進來的值的 toString() 方法,即把 12 轉(zhuǎn)換成 "12",把 true 轉(zhuǎn)換成 "true",把 false 轉(zhuǎn)換成 "false",以此類推。
強制轉(zhuǎn)換成字符串和調(diào)用 toString() 方法的唯一不同之處在于,對 null 和 undefined 值強制類型轉(zhuǎn)換可以生成字符串而不引發(fā)錯誤:
var s1 = String(null); //"null" var oNull = null; var s2 = oNull.toString(); //會引發(fā)錯誤
2、自動類型轉(zhuǎn)換
說完了強制類型轉(zhuǎn)換,再來看看自動類型轉(zhuǎn)換,實際上自動類型轉(zhuǎn)換是建立在強制類型轉(zhuǎn)換的基礎(chǔ)上,當(dāng)預(yù)期某個位置應(yīng)該是某類型(布爾、數(shù)值、字符串)的數(shù)據(jù)時,就會調(diào)用相應(yīng)的強制類型轉(zhuǎn)換函數(shù),這個是自動進行的。
*當(dāng)JavaScript遇到預(yù)期為布爾值的地方(比如if語句的條件部分),就會將非布爾值的參數(shù)自動轉(zhuǎn)換為布爾值。系統(tǒng)內(nèi)部會自動調(diào)用Boolean函數(shù)。
因此除了以下六個值,其他都是自動轉(zhuǎn)為true。
- undefined
- null
- -0
- 0或+0
- NaN
- ''(空字符串)
*當(dāng)JavaScript遇到預(yù)期為字符串的地方,就會將非字符串的數(shù)據(jù)自動轉(zhuǎn)為字符串。系統(tǒng)內(nèi)部會自動調(diào)用String函數(shù)。
字符串的自動轉(zhuǎn)換,主要發(fā)生在加法運算時。當(dāng)一個值為字符串,另一個值為非字符串,則后者轉(zhuǎn)為字符串。
*當(dāng)JavaScript遇到預(yù)期為數(shù)值的地方,就會將參數(shù)值自動轉(zhuǎn)換為數(shù)值。系統(tǒng)內(nèi)部會自動調(diào)用Number函數(shù)。
除了加法運算符有可能把運算子轉(zhuǎn)為字符串,其他運算符都會把運算子自動轉(zhuǎn)成數(shù)值。
一元運算符也會把運算子轉(zhuǎn)成數(shù)值。
+'abc' // NaN -'abc' // NaN +true // 1 -false // 0
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
- js 數(shù)據(jù)類型轉(zhuǎn)換總結(jié)筆記
- JavaScript中的數(shù)據(jù)類型轉(zhuǎn)換方法小結(jié)
- JavaScript實現(xiàn)數(shù)據(jù)類型的相互轉(zhuǎn)換
- JavaScript中數(shù)據(jù)類型轉(zhuǎn)換總結(jié)
- javascript基本數(shù)據(jù)類型和轉(zhuǎn)換
- JavaScript的數(shù)據(jù)類型轉(zhuǎn)換原則(干貨)
- JavaScript數(shù)據(jù)類型轉(zhuǎn)換詳解(推薦)
- JavaScript數(shù)據(jù)類型轉(zhuǎn)換簡單方法舉例
相關(guān)文章
layui 數(shù)據(jù)表格 點擊分頁按鈕 監(jiān)聽事件的實例
今天小編就為大家分享一篇layui 數(shù)據(jù)表格 點擊分頁按鈕 監(jiān)聽事件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
JavaScript與C# Windows應(yīng)用程序交互方法
JavaScript與C# Windows應(yīng)用程序交互方法...2007-06-06
JS實現(xiàn)的漢字與Unicode碼相互轉(zhuǎn)化功能分析
這篇文章主要介紹了JS實現(xiàn)的漢字與Unicode碼相互轉(zhuǎn)化功能,結(jié)合實例形式分析了javascript實現(xiàn)漢字與Unicode碼轉(zhuǎn)換相關(guān)操作技巧與注意事項,需要的朋友可以參考下2018-05-05
Javascript中查找不以XX字符結(jié)尾的單詞示例代碼
我在寫這篇文章之前花了2個多小時在弄正則表達式,下為大家介紹下具體的實現(xiàn)思路,感興趣的朋友可以參考下2013-10-10
contenteditable可編輯區(qū)域設(shè)置換行實現(xiàn)技巧實例
這篇文章主要為大家介紹了contenteditable可編輯區(qū)域設(shè)置換行實現(xiàn)技巧實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01

