資料型別的轉換

2022-09-13 16:18:10 字數 2001 閱讀 8984

強制轉換主要指使用number()、string()、boolean()三個函式,手動將各種型別的值,分別轉換成數字、字串或者布林值。

使用number()函式,可以將任意型別的值轉化成數值。

// 數值:轉換後還是原來的值

number(324) // 324

// 字串:如果可以被解析為數值,則轉換為相應的數值

number("324") // 324

// 字串:如果不可以被解析為數值,返回nan

number("324abc") // nan

// 空字串轉為0

number("") // 0

// 布林值:true轉成1,false轉成0

number(true) // 1

number(false) // 0

// undefined:轉成nan

number(undefined) // nan

// null:轉成0

number(null) // 0

number()將字串轉為數值,要比parseint()嚴格很多。基本上只要有乙個字元無法轉成數值,整個字串就會被轉成nan。

parseint("42 cats") // 42

number("42 cats") // nan

上面**中,parseint逐個解析字元,而number函式整體轉換字串的型別。另外,parseint和number函式都會自動過濾乙個字串前導和字尾的空格。

number() // nan

number([1, 2, 3]) // nan

number([4]) // 4

之所以會這樣,是因為number背後的轉換規則比較複雜。

第一步,呼叫物件自身的valueof方法。如果返回原始型別的值,則直接對該值使用number函式,不再進行後續步驟。

第二步,如果valueof返回的還是物件,則改為呼叫物件自身的tostring方法。如果tostring方法返回原始型別的值,則對該值使用number函式,不再進行後續步驟。

第三步,如果tostring方法返回的是物件,就報錯。

var obj = ;

},tostring : function() ;

}};number(obj) // typeerror: cannot convert object to primitive value

string函式可以將任意型別的值轉化為字串,轉換規則如下。

(1)原始型別值

string() // "[object object]"

string([1, 2, 3]) // "1,2,3"

string轉換規則:

1、先呼叫物件自身的tostring方法。如果返回原始型別的值,則對該值使用string函式,不再進行以下步驟。

2、如果tostring方法返回原始型別的值,則對該值使用string函式,不再進行以下步驟。

3、如果valueof方法返回的是物件,就報錯。

boolean函式將任意型別的值轉為布林值。

它的轉換規則相對簡單:除了以下五個值得轉換結果為false,其他的值全部為true。

以下三種情況,j**ascript會自動轉換資料型別。

第一種情況,不同型別的資料互相運算。

123 + "abc" // "123abc"
第二種情況,對非布林值型別的資料求布林值。

第三種情況,對非數值型別的值使用一元運算子(即+和-)

+  // nan

- [1, 2, 3] // nan

自動轉換的規則是這樣的:預期什麼型別的值,就呼叫該型別的轉換函式。比如,某個位置預期為字串,就呼叫string函式進行轉換。如果該位置即可以是字串,也可能是數值,那麼預設轉為數值。

資料型別 型別轉換

這樣的語句將報錯,因為char型別精度低於int型別,編譯器無法將其自動轉換,只能進行強制轉換 int x 65 char ch char x 舉例1 int age 19 char 女 char result age int 不可以自動轉換成char 精度損失 舉例2 int a 10 int b...

Objective C資料型別 資料型別轉換

資料型別 1.objective c資料型別可以分為 基本資料型別 物件資料型別和id型別。2.基本資料型別有 int float double和char型別。3.物件型別就是類或協議所宣告的指標型別,例如 nsautoreleasepool pool 其中,nsautoreleasepool是乙個...

資料型別的轉換

資料型別的轉換 剛接觸vc程式設計的朋友往往對許多資料型別的轉換感到迷惑不解,本文將介紹一些常用資料型別的使用。我們先定義一些常見型別變數藉以說明 int i 100 long l 2001 float f 300.2 double d 12345.119 char username 女俠程佩君 c...