JS 型別轉換

2022-02-14 22:17:48 字數 3287 閱讀 7299

值轉字串

數字布林值

物件undefined

'undefined'

0false

throws typeerror

null

'null'

0false

throws typeerror

true

'true'

1new boolean(true)

false

'false'

0new boolean(false)

'' (空字串)

0false

new string('')

'1.2'(數字字串)

1.2true

new string('1.2')

'shiny'(非數字字串)

nantrue

new string('shiny')

0'0'

false

new number(0)

-0'0'

false

new number(-0)

infinity

'infinity'

true

new number(infinity)

-infinity

'-infinity'

true

new number(-infinity)

33'33'

true

new number(33)

{} (任意物件)

true

new number(nan)

''0true

new number(nan)

[33]

'33'

33true

new number(nan)

['a']

'a'nan

true

new number(nan)

function(){}

nantrue

new number(nan)

由於js可以做靈活的型別轉換,因此其'=='相等運算子也隨相等的含義靈活多變。例如:

null == undefined		// 這兩值被認為相等

'0' == 0 // 前面的字串轉為了數字

0 == false // 比較之前布林值轉成了數字

'0' == false // 比較前字串和布林值都轉成了數字

乙個值轉換為另乙個值並不意味著兩個值相等。比如,如果在期望使用布林值的地方使用了undefined,它將會轉換為false,但這並不表明undefined == false。js運算子和語句期望使用多樣化的資料型別,並可以相互轉換。if語句將undefined轉換為false,但==運算子從不試圖將其運算元轉換為布林值。

相等運算子==比較並不嚴格。如果兩個運算元不是同一型別,那麼相等運算子會嘗試進行一些型別轉換,然後進行比較:

number('3')			>> 3

string(false) >> 'false'

boolean() >> true

object(3) >> new number(3)

需要注意的是,除了null或undefined之外的任何值都具有tostring()方法,這個方法執行結果通常和string()方法的返回結果一致。

x+''			//等價於string('x')

+x // 等價於number(x).也可以寫成x-0

!!x // 等價於boolean(x).注意是雙嘆號。

10+'shiny' // '10shiny',數字10轉換為字串

'7'*'4' // 28,兩個字串均轉換為數字

var n = 1 - 'x' // nan: 字串x無法轉換為數字

n + 'shiny' // 'nan shiny': nan轉換為字串nan

var n = 17;

var a = n.tostring(2); // 轉化為 『10001』

var b = '0' + n.tostring(8); // 轉換為『021』

var c = '0x' + n.tostring(16); // 轉換為『0x11'

parseint('1 shinygang')				>> 3

parsefloat('3.14 shinygang') >> 3.14

parseint('-12.33') >> -12

parseint('0xff') >> 255

parsefloat('.1') >> 0.1

parseint('.1') >> nan,整數不能以'.'開始

parseint('11', 2) >> 3 (1*2+1)

parseint('ff', 16) >> 255 (15*16+15)

().tostring()   	>> "[object object]"
很多類定義了更多特定版本的tostring()方法。例如,陣列類的tostring()方法將每個陣列元素轉換為乙個字串,並在元素之間新增逗號後合併成結果字串。函式類的tostring()方法返回這個函式的實現定義表示方式。日期類定義的tostring()方法返回了乙個可讀的日期和時間字串。regexp類定義的tostring()方法將regexp物件轉換為表示正規表示式直接量的字串。

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

(function(x)).tostring() >> "function(x)"

/\d/g.tostring() >> "/\\d/g"

new date(2010,0,1).tostring() >> "fri jan 01 2010 00:00:00 gmt+0800 (cst)"

valueof():如果存在任意原始值,它就預設將物件轉換為表示它的原始值。物件是復合值,而且大多數物件無法真正表示為乙個原始值,因此預設valueof()方法簡單地返回物件本身,而不是返回乙個原始值。陣列、函式和正規表示式簡單地繼承了這個預設方法,呼叫這些型別的例項的valueof()方法只是簡單返回物件本身。日期則返回對應毫秒數。

3..1、js中物件到字串的轉換經過了如下這些步驟:

JS 型別轉換 強制型別轉換

js 型別轉換 強制型別轉換 一 parseint 將其他型別轉換成number型別的整數 注意 string number 1 字串中值的首字元必須是數字,轉換後才能得到具體的值 否則得到nan 2 只轉換從首字元開始的連續數字 如 2b345 轉換後只得到2 3 除了string,其他型別轉換後...

js型別轉換

js varscolor blue alert scolor.length outputs 4 js varbfound false alert bfound.tostring outputs false js varinum1 10 varfnum2 10.0 alert fnum2.tostri...

js 型別轉換

function str function tostr val function todstr val,dv function trim str function lenb str function ismobile str d 13 d 15 d if reg.test trim str retu...