JS 中的資料型別轉換

2022-02-21 06:16:13 字數 4498 閱讀 2274

這種方法可以將number,boolean,objectarray,function轉化為字串,但是無法轉換null,undefined這兩種資料型別。

(1).tostring() // "1"

true.tostring() // "true"

var obj = {}

obj.tostring() // "[object object]"

null.tostring() // uncaught typeerror: cannot read property 'tostring' of null

undefined.tostring() // uncaught typeerror: cannot read property 'tostring' of undefined

// 陣列

[1, 2, 3].tostring() // "1, 2, 3"

// 函式

var fn1 = function()

fn1.tostring() // "function()"

string函式可以將任意型別的值轉化成字串。

原始型別值轉換:

string(123) // "123"

string('abc') // "abc"

string(true) // "true"

string(undefined) // "undefined"

string(null) // "null"

string方法的引數如果是物件,返回乙個型別字串;如果是陣列,返回該陣列的字串形式。

string() // "[object object]"

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

string方法背後的轉換規則

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

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

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

1000 + ''     // "1000"

null + '' // "null"

undefined + '' // "undefined"

true + '' // "true"

obj + '' // "[object object]"

[1,2,3] + '' // "1,2,3"

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

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({}) // nan

number方法的引數是物件時,將返回nan,除非是包含單個數值的陣列。

number() // nan

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

number([5]) // 5

number背後的轉換規則

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

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

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

舉個例子:

var obj = ;

number(obj) // nan

// 等同於

if (typeof obj.valueof() === 'object') else

parseint()函式解析乙個字串引數,並返回乙個指定進製的整數

// 語法,第二個引數是數值的進製,數值範圍是2 - 36之間

parseint(string, radix);

parseint('123') // 123

parseint(' 81') // 81

parseint(1.23) // 1

parseint('15px') // 15

parseint('011') // 11

parseint('1e+21') // 1

// 進製轉換

parseint(021, 8); // 15,按8進製轉換

parseint("0xf", 16); //15, 按16進製制轉換

parseint("1111", 2); //15, 按2進製轉換

parseint轉換規則:mdn parseint , 阮一峰教程-數值

parsefloat方法用於將乙個字串轉為浮點數。

parsefloat('3.14') // 3.14

// 如果字串符合科學計數法,則會進行相應的轉換。

parsefloat('314e-2') // 3.14

parsefloat('0.0314e+2') // 3.14

// 如果字串包含不能轉為浮點數的字元,則不再進行往後轉換,返回已經轉好的部分

parsefloat('3.14more non-digit characters') // 3.14

// parsefloat方法會自動過濾字串前導的空格

parsefloat('\t\v\r12.34\n ') // 12.34

// 如果引數不是字串,或者字串的第乙個字元不能轉化為浮點數,則返回nan。

parsefloat() // nan

parsefloat('ff2') // nan

parsefloat('') // nan

阮一峰教程-parsefloat

這是一種最簡單快捷的方法,字串減去乙個0可以轉換成數字

'1' - 0 // 1

'a' - 0 // nan

'01ab' - 0 // nan

+ '1' // 1

+ '-1' // -1

+ 's' // nan

+ '1s' // nan

+ obj // nan

除了值是null,undefined,0,nan,''(空字串)轉成false外,其它的全部都是true

boolean(undefined) // false

boolean(null) // false

boolean(0) // false

boolean(nan) // false

boolean('') // false

boolean({}) // true

boolean() // true

!!1 // true

!!null // false

!!undefined // false

!!obj // true

!!'s' // true

JS中資料型別轉換

js中的資料型別 數字 nan 字串 布林值 函式 物件 object null 未定義 顯式型別轉換 強制的型別轉換 number 整體的進行轉換 parseint 從左到右的進行轉換 不識別小數點.parsefloat 從左到右的進行轉換 可以識別小數點.隱式型別轉換 200 3 變成字串 20...

js中資料型別的轉換

1 表示式中的型別轉換 在使用不同型別的變數進行表示式運算時,js將根據需要自動嘗試進行必要的資料型別轉換,且總是將表示式右邊的資料型別轉換為左邊的資料型別 code var astr 24 var anum 25 var x astr anum x 2425 var y anum astr y 4...

JS中的資料型別轉換

方式一 呼叫被轉換資料型別的tostring 方法 該方法不會影響到原變數,它會將轉換的結果返回 但是注意 null和undefined這兩個值沒有tostring 方法,如果呼叫他們的方法,會報錯 方式二 呼叫string 函式,並將被轉換的資料作為引數傳遞給函式 使用string 函式做強制型別...