2020-3-15 前端達人
數(shù)據(jù)類型的轉化(JavaScript)—自動轉化和強制轉化
這一周,我來分享一下在JavaScript中的數(shù)據(jù)類型轉化。
首先我們要知道在JavaScript中的數(shù)據(jù)類型有什么?在這里我就不詳細介紹了,幫你總結好了。
1.布爾類型-----Boolean---isNaN()
用來判斷一個變量是否為非數(shù)字的類型,是數(shù)字返回false,不是數(shù)字返回true。
2.數(shù)值類型-----Number
存儲時,是按照二進制數(shù)值存儲,輸出時,默認都是按照十進制數(shù)值輸出。
在JavaScript中二進制前加0b/0B,八進制前面加0 ,十六進制前面加0x。
如果需要按照原始進制數(shù)值輸出,用格式為:
變量名稱.toString(進制) ;
注意的是:S必須大寫,將數(shù)值轉化為字符串形式輸出
如:console.log( a.toString(2) );將a轉換成2進制的形式輸出。
3.字符串類型-----String
JavaScript可以用單引號嵌套雙引號, 或者用雙引號嵌套單引號(外雙內單,外單內雙)
字符串是由若干字符組成的,這些字符的數(shù)量就是字符串的長度。
通過字符串的length屬性可以獲取整個字符串的長度。
例子:var str = 'my name is xiaoming';
console.log(str.length);
輸出的結果是19。可以知道空格也代表一個字符。
4.undefined
表示沒有數(shù)值-----應該有數(shù)值,但是現(xiàn)在沒有數(shù)值
5.null
表示數(shù)值為空-----表示有數(shù)值,但是數(shù)值是“空”
上面就是數(shù)據(jù)類型的五種形式。那么它是如何轉化呢?聽我詳細給你講解。
在 JavaScript 程序中 , 變量中存儲的數(shù)據(jù)類型沒有限制,也就是在變量中可以存儲任何符合JavaScript語法規(guī)范的數(shù)據(jù)類型。但是在 JavaScript 程序的執(zhí)行過程中,往往需要變量中存儲的數(shù)值是某種特定的數(shù)據(jù)類型,別的數(shù)據(jù)類型不行,此時就需要進行數(shù)據(jù)類型的轉化。
————————————————
版權聲明:本文為CSDN博主「什什么都繪」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_39406353/article/details/104864224上面就是數(shù)據(jù)類型的五種形式。那么它是如何轉化呢?聽我詳細給你講解。
在 JavaScript 程序中 , 變量中存儲的數(shù)據(jù)類型沒有限制,也就是在變量中可以存儲任何符合JavaScript語法規(guī)范的數(shù)據(jù)類型。但是在 JavaScript 程序的執(zhí)行過程中,往往需要變量中存儲的數(shù)值是某種特定的數(shù)據(jù)類型,別的數(shù)據(jù)類型不行,此時就需要進行數(shù)據(jù)類型的轉化。
JavaScript中數(shù)據(jù)類型的轉化,分為自動轉化和強制轉化:
自動轉化是計算機程序,自動完成的轉化。
強制轉化是程序員,強行完成的轉化
1.布爾類型的自動轉化:
在 執(zhí)行 if 判斷時 ,其他數(shù)據(jù)類型會自動轉化為布爾類型
其他類型轉化為布爾類型的原則
0 '' undefined null NaN 這五種情況轉化為false
特別提醒 0.0 0.00000 都算是0
其他的所有都會轉化為 true
2.字符串的自動轉化:
執(zhí)行字符串拼接, +號的兩側,應該都是字符串類型,會將其他數(shù)據(jù)類型轉化為字符串類型
轉化原則:
//基本數(shù)據(jù)類型 / 簡單數(shù)據(jù)類型------將數(shù)據(jù)數(shù)值直接轉化為字符串 , 然后執(zhí)行拼接操作
布爾值 true ---> 字符串 'true'
布爾值 false ---> 字符串 'fasle'
undefined ---> 字符串 'undefined'
unll ---> 字符串 'null'
數(shù)值 ---> 將數(shù)值解析轉化為'對應的純數(shù)字的字符串'
// 引用數(shù)據(jù)類型 / 復雜數(shù)據(jù)類型
數(shù)組 ---> 將 [] 中的內容,轉化為字符串的形式,執(zhí)行拼接操作
對象 ---> 任何對象,任何內容,都會轉化為 [object Object] 固定的內容形式,執(zhí)行拼接操作
函數(shù) ---> 將所有的程序代碼,轉化為字符串,執(zhí)行拼接操作
3.數(shù)值的自動轉化:
在執(zhí)行運算時,會觸發(fā)數(shù)據(jù)類型的自動轉化。
轉化原則:
布爾類型 : true ---> 1
false ---> 0
undefined : 轉化為 NaN
null : 轉化為 0
字符串 :
如果整個字符串,是純數(shù)字字符串,或者符合科學計數(shù)法 ---> 轉化為對應的數(shù)值
如果字符串內有不符合數(shù)字規(guī)范的內容 ---> 轉化為 NaN
數(shù)組,對象,函數(shù):
如果是+加號執(zhí)行的是字符串拼接效果,按照這些數(shù)據(jù)類型轉化為字符串的原則來轉化
如果是其他形式的運算 執(zhí)行結果都是 NaN
4.布爾類型的強制轉化:
布爾類型的強制轉化就是使用JavaScript中定義好的 方法/函數(shù) Boolean( 數(shù)據(jù)/變量 )
Boolean() 這個方法 不會改變 變量中存儲的原始數(shù)值
轉化原則與自動轉化原則相同
0 '' undefined null NaN --------> false
其他數(shù)據(jù),都轉化為true
5.字符串類型的強制轉化:
方法1,變量.toString(進制類型)
將數(shù)值強制轉化為字符串,并且可以設定轉化的進制,.toString() 之前,不能直接寫數(shù)值,必須是寫成變量的形式
進制常用的數(shù)值是 2 8 16 ,可以設定的范圍是 2 - 36 進制
方法2,String( 變量 / 數(shù)據(jù) )
將變量或者數(shù)據(jù),轉化為字符串,原則按照自動轉化的原則來執(zhí)行,不會改變變量中存儲的原始數(shù)值
但是在字符串拼接時,會將其他數(shù)據(jù)類型自動轉化為字符串
6.數(shù)字類型的強制轉化:
————————————————方法1 , Number(變量/數(shù)值)
console.log( Number(true) ); // 1
console.log( Number(false) ); // 0
console.log( Number(null) ); // 0
console.log( Number(undefined) ); // NaN
console.log( Number('100') ); // 對應的數(shù)值
console.log( Number('100.123') ); // 對應的數(shù)值
console.log( Number('2e4') ); // 對應的數(shù)值
console.log( Number('123abc') ); // NaN
console.log( Number( [1,2,3,4,5] ) ); // NaN
console.log( Number( {name:'zhangsan'} ) ); // NaN
console.log( Number( function fun(){console.log('abc')} ) ); // NaN
將其他類型強制轉化為數(shù)值類型,轉化原則與自動轉化選擇相同
方法2, parseInt(變量 / 數(shù)據(jù)) 是獲取變量或者數(shù)據(jù)的整數(shù)部分
從數(shù)據(jù)的 左側起 解析獲取 整數(shù)內容
console.log( parseInt(true) ); // 都是 NaN
console.log( parseInt(false) );
console.log( parseInt(null) );
console.log( parseInt(undefined) );
console.log( parseInt( {name:'zhangsan'} ) );
console.log( parseInt( function fun(){console.log('abc')} ) );
數(shù)組執(zhí)行,是獲取 數(shù)值部分 也就是 沒有 []的部分
1,2,3,4,5 整數(shù)部分是 1 1之后是逗號 逗號不是整數(shù),之后的部分也就不算整數(shù)
獲取第一個數(shù)值的整數(shù)部分,如果有就獲取,如果沒有,結果是NaN
console.log( parseInt( [1,2,3,4,5] ) ); // 結果是 1
console.log( parseInt( [null,2,3,4,5] ) ); // 結果是 NaN
如果是整數(shù)就直接獲取,如果是浮點數(shù),或者科學計數(shù)法,就獲取整數(shù)部分
console.log( parseInt( 100 ) ); // 整數(shù)是直接獲取
console.log( parseInt( 0.0123 ) ); // 浮點數(shù)是獲取整數(shù)部分
console.log( parseInt( 3.123456e3 ) ); // 科學計數(shù)法是解析之后,獲取整數(shù)部分
字符串不同了
如果是純數(shù)字的字符串
console.log( parseInt( '100' ) ); // 與數(shù)字的結果相同
console.log( parseInt( '0.0123' ) ); // 與數(shù)字的結果相同
console.log( parseInt( '3.123456e3' ) ); //3
console.log( parseInt( '3abc' ) ); //3
console.log( parseInt( '3.123' ) ); //3
方法3 , parseFloat( 變量 / 數(shù)值 )
獲取浮點數(shù)部分
console.log( parseFloat(true) ); // 都是 NaN
console.log( parseFloat(false) );
console.log( parseFloat(null) );
console.log( parseFloat(undefined) );
console.log( parseFloat( {name:'zhangsan'} ) );
console.log( parseFloat( function fun(){console.log('abc')} ) );
//數(shù)值, 整數(shù),浮點數(shù),都會完整獲取
console.log( parseFloat(100) ); //100
console.log( parseFloat(100.1234) ); //100.1234
console.log( parseFloat(1.234567e3) ); //1234.567
// 關鍵是字符串
// 從字符串的左側起 解析 符合浮點數(shù)的部分
console.log( parseFloat( '100' ) ); // 與數(shù)字的結果相同
console.log( parseFloat( '0.0123' ) ); // 與數(shù)字的結果相同
console.log( parseFloat( '3.123456e3' ) ); // 科學技術法會解析
console.log( parseFloat( '3.1223abc' ) );
console.log( parseFloat( '3.123' ) );
好了,這就是在JavaScript中數(shù)據(jù)類型的轉化,希望可以幫助到你。
版權聲明:本文為CSDN博主「什什么都繪」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_39406353/article/details/104864224