詳解Javascript數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則
一、數(shù)據(jù)類型
5種基本數(shù)據(jù)類型:Null/Undefined/String/Boolean/Number
1種復雜數(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)換機制,在某處預期為某種類型而不是某種類型時,就會自動轉(zhuǎn)換為預期類型,這就是我們常說的隱式轉(zhuǎn)換。
1、強制類型轉(zhuǎn)換
在了解隱式轉(zhuǎn)換的規(guī)則前先來看看強制類型轉(zhuǎn)換,強制類型轉(zhuǎn)換主要是用Boolean()/String()/Number()將各類型的數(shù)據(jù)轉(zhuǎn)換成布爾、字符串、數(shù)值型數(shù)據(jù)。
Boolean() 函數(shù)
當要轉(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ǔ)上,當預期某個位置應(yīng)該是某類型(布爾、數(shù)值、字符串)的數(shù)據(jù)時,就會調(diào)用相應(yīng)的強制類型轉(zhuǎn)換函數(shù),這個是自動進行的。
*當JavaScript遇到預期為布爾值的地方(比如if語句的條件部分),就會將非布爾值的參數(shù)自動轉(zhuǎn)換為布爾值。系統(tǒng)內(nèi)部會自動調(diào)用Boolean函數(shù)。
因此除了以下六個值,其他都是自動轉(zhuǎn)為true。
- undefined
- null
- -0
- 0或+0
- NaN
- ''(空字符串)
*當JavaScript遇到預期為字符串的地方,就會將非字符串的數(shù)據(jù)自動轉(zhuǎn)為字符串。系統(tǒng)內(nèi)部會自動調(diào)用String函數(shù)。
字符串的自動轉(zhuǎn)換,主要發(fā)生在加法運算時。當一個值為字符串,另一個值為非字符串,則后者轉(zhuǎn)為字符串。
*當JavaScript遇到預期為數(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)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
- 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)文章
javascript動態(tài)控制服務(wù)器控件實例
在頁面中放入一個DropDownList控件,并添加一項,用來分析其產(chǎn)生的HTML代碼,這樣在使用js進行動態(tài)控制時,將會非常清晰2014-09-09layui table動態(tài)表頭 改變表格頭部 重新加載表格的方法
今天小編就為大家分享一篇layui table動態(tài)表頭 改變表格頭部 重新加載表格的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09借用Google的Javascript API Loader來加速你的網(wǎng)站
加速頁面加載速度有一個方法就是把CSS和JS文件放到另外一個單獨的服務(wù)器上,這樣在訪問量比較大的情況下可以分擔主服務(wù)器的壓力2009-01-01