資料型別 之 自動轉化與強制轉化

2021-10-03 21:06:39 字數 4179 閱讀 1205

資料型別大體分為兩種,一種是基本資料型別(也叫標準資料型別或簡單資料型別),一種是引用資料型別(也叫複雜資料型別),基本資料型別中又分為:布林型、數值型、字串型、undefined和null,而引用資料型別中又分為:陣列、物件和函式。變數中儲存的資料型別沒有限制,可以儲存任何符合語法規範的資料型別。要想實現一些功能,不同型別之間進行判斷和運算,就需要自動或強制的將不同資料型別轉成相同資料型別。(逆戰班!逆戰!)

所謂的自動轉化,就是電腦程式自動完成的轉化,但是不會在任何時候都發生,只會在特定的情況下執行。(劃重點啦!)

1.其他資料型別轉布林型

此情況一般發生在判斷語句中,如if判斷的表示式中,表示式的執行結果只能是布林型(true or false)。各種資料型別中,只有特定的值能轉化成false,有0,』』(空字串),undefined,null和nan,其他資料,只要變一點,都會轉成true。

2.其他資料型別轉字串型

當進行字串拼接的時候發生,加號兩邊無論是什麼資料型別的資料,都會自動轉化成字串型,而後進行字串的拼接操作。

當引用資料型別進行自動轉化成字串型的時候,有各自的特殊顯示。(空腹者慎進)

(1)陣列轉字元型

陣列轉成字串時,會將陣列中的內容整個轉成字串。

例:

var str1 =

"美食 "+[

'蛋糕'

,'泡芙'

,'肉鬆餅'];

//進行字串拼接 字串+陣列

console.

log(str1)

;//在控制台輸出字串拼接結果

(2)物件轉字元型

物件是將內容轉成[object,object]之後,再進行字串拼接。

例:

var str2 =

"100 "

+100

;//進行字串拼接 字串+物件

console.

log(str2)

;//在控制台輸出字串拼接結果

注:第乙個object的o是小寫,第二個是大寫o。

(3)函式轉字元型

函式進行字串拼接時,直接將函式語句轉成字串,再進行字串拼接。

例:

//進行字串拼接 字串+函式

var str3 =

'美食'

+function

choicefood()

;//在控制台輸出字串拼接結果

console.

log(str3)

;

3.其他資料型別轉數值型

當執行數**算時,其他資料型別參與,會自動轉成數值型,而後進行計算。

(1)布林型轉數值型

上面提到,0轉成布林型會轉成false,這個條件是可逆的,布林型轉數值型時,false會轉成0,而true會轉成1。

(2)undefined

undefined轉成nan。很顯然,undefined不是數,則轉成nan。

(3)null

null表示值為空,0也表示沒有,所以null轉成0。

(4)字串

在數值型資料中,其他型別轉成數值型會進行乙個是否為數字的判斷,如不是純數字或科學計數法,則轉成nan,是則轉成相應的數值。

注:任何有nan的計算,結果都為nan。

例:

var int1 =

100-

'100'

;//結果為0

var int2 =

100-

'123asd'

;//結果為nan

var int3 =

100-

'2e2'

;//2e2 = 2*10^2 = 200,100-200,結果為-100

(5)引用資料型別

加法運算時,引用資料型別進行字串拼接;

減法運算時,轉成nan。

如果想要特定的資料形式,就需要運用強制轉化,把資料轉成想要的資料型別,但不會改變原變數中儲存的資料及資料型別。

1.其他資料型別強制轉成布林型

格式:boolean(資料/變數)

原則:與自動轉化的原則相同

例:

var int1 =1;

console.

log(

boolean

(int));

//輸出為true

2.其他資料型別強制轉成字串型

有兩種方法可以實現其他資料型別強制轉成字串型。

(1)格式:變數.tostring(進製型別)。

例:

var int2 =10;

console.

log(int2.

tostring(2

));//轉成二進位制,輸出為1010

console.

log(int2.

tostring()

);//轉成十進位制,輸出為10(字串型)

console.

log(int2)

;//輸出為10(數值型)

這裡需要注意的是,當tostring()括號中不寫值時,執行的是轉成十進位制數(預設值)。在控制台中,黑色字型為字串型資料,藍色字型為數值型資料。所以後兩條語句雖然數值相同為10,但資料型別不同。

(2)string(變數或資料)

轉化原則與自動轉化相同,不會改變原始資料。

3.其他資料型別強制轉成數值型

(1)number(變數或資料)

轉化原則與自動轉化相同

(2)parseint(變數或資料)(常用)

此為取整操作,其中布林型(true、false),null,undefined,物件和函式均轉成nan,而陣列則只轉陣列中第乙個元素,第乙個元素如果有整數部分,則整數部分為執行結果,如果沒有整數部分,則執行結果為nan。

例:

console.

log(

parseint([

4,5,

6]))

;//4

console.

log(

parseint

([undefined,5,

6]))

;//nan

console.

log(

parseint

(3.1415e2))

; = 3.1415*10^2,輸出結果為314

*特殊:字串

不能解析科學計數法。

例:

console.

log(

parseint

('3.1415e2'))

;//3

console.

log(

parseint

('3.14abc'))

;//3

(3)parsefloat()

獲取浮點數部分(可以解析科學計數法)。

例:

console.

log(

parsefloat

('3.1415e2'))

;console.

log(

parsefloat

('3.14abc'))

;

以上四種方法,可根據具體需求選擇對應的方法來實現轉化。其中 parseint() 最為常用。

小彩蛋:math.random()為生成[0,1)範圍內的隨機數,無限接近於1,但不等於1。與parseint()結合使用,可以輸出固定範圍內的隨機整數。如果想要輸出[a,b]範圍內的隨機整數,重新整理一次,輸出乙個隨機結果,公式為parseint(math.random()(b+1-a)+a)。

注:math.random()(b+1-a)+a 公式中注意先乘後加。

例:

//生成2-100範圍內的隨機數 num >= 2 && num <=100

var num =

parseint

(math.

random()

*(100-2+

1)+2

);console.

log(num)

;

資料型別的轉化 自動轉化 強制轉化

資料型別轉化,就是將當前資料型別轉化為其他資料型別 分為自動轉化和強制轉化 在 執行 if 判斷時 其他資料型別會自動轉化為布林型別 0 空字串 undefined null nan 這五種情況轉化為false 注0.0和0.00000等 都算是0 其他的所有都會轉化為 true 例如 字串裡空格 ...

資料型別的轉化 自動轉化 強制轉化

js資料型別的檢測,使用typeof 變數 資料 執行結果是變數中儲存資料的資料型別。布林型別的執行結果是 boolean var bool1 true console.log typeof bool1 a.其他型別轉化為布林型別 在執行if 判斷時,其他資料型別會自動轉化為布林型別。a 原則 轉化...

JavaScript資料型別的強制轉化 數值

下班很無聊 2017 05 24 21 50 一 轉化為數值型別 a 如果是布林值,false為0,true為1 var a true alert number a 1 b 如果是數字,轉化為本身,將無意義的後倒0去掉。var b 1.0 alert number b 1 c 如果null轉化為0 ...