這種方法可以將number
,boolean
,object
,array
,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
方法用於將乙個字串轉為浮點數。
阮一峰教程-parsefloatparsefloat('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
這是一種最簡單快捷的方法,字串減去乙個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 函式做強制型別...