W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
大多數(shù)情況下,運(yùn)算符和函數(shù)會(huì)自動(dòng)將賦予它們的值轉(zhuǎn)換為正確的類(lèi)型。
比如,alert
會(huì)自動(dòng)將任何值都轉(zhuǎn)換為字符串以進(jìn)行顯示。算術(shù)運(yùn)算符會(huì)將值轉(zhuǎn)換為數(shù)字。
在某些情況下,我們需要將值顯式地轉(zhuǎn)換為我們期望的類(lèi)型。
對(duì)象還未納入討論中
在本章中,我們不會(huì)討論 object 類(lèi)型。目前,我們將只學(xué)習(xí)原始類(lèi)型。
之后,在我們學(xué)習(xí)完 object 類(lèi)型后,我們會(huì)在 對(duì)象 —— 原始值轉(zhuǎn)換 一章中學(xué)習(xí)對(duì)象 — 原始值轉(zhuǎn)換。
當(dāng)我們需要一個(gè)字符串形式的值時(shí),就會(huì)進(jìn)行字符串轉(zhuǎn)換。
比如,alert(value)
將 value
轉(zhuǎn)換為字符串類(lèi)型,然后顯示這個(gè)值。
我們也可以顯式地調(diào)用 String(value)
來(lái)將 value
轉(zhuǎn)換為字符串類(lèi)型:
let value = true;
alert(typeof value); // boolean
value = String(value); // 現(xiàn)在,值是一個(gè)字符串形式的 "true"
alert(typeof value); // string
字符串轉(zhuǎn)換最明顯。false
變成 "false"
,null
變成 "null"
等。
在算術(shù)函數(shù)和表達(dá)式中,會(huì)自動(dòng)進(jìn)行 number 類(lèi)型轉(zhuǎn)換。
比如,當(dāng)把除法 ?/
? 用于非 number 類(lèi)型:
alert( "6" / "2" ); // 3, string 類(lèi)型的值被自動(dòng)轉(zhuǎn)換成 number 類(lèi)型后進(jìn)行計(jì)算
我們也可以使用 Number(value)
顯式地將這個(gè) value
轉(zhuǎn)換為 number 類(lèi)型。
let str = "123";
alert(typeof str); // string
let num = Number(str); // 變成 number 類(lèi)型 123
alert(typeof num); // number
當(dāng)我們從 string 類(lèi)型源(如文本表單)中讀取一個(gè)值,但期望輸入一個(gè)數(shù)字時(shí),通常需要進(jìn)行顯式轉(zhuǎn)換。
如果該字符串不是一個(gè)有效的數(shù)字,轉(zhuǎn)換的結(jié)果會(huì)是 ?NaN
?。例如:
let age = Number("an arbitrary string instead of a number");
alert(age); // NaN,轉(zhuǎn)換失敗
number 類(lèi)型轉(zhuǎn)換規(guī)則:
值 | 變成…… |
---|---|
undefined
|
NaN
|
null
|
0
|
true 和 false
|
1 and 0
|
string
|
去掉首尾空白字符(空格、換行符 \n 、制表符 \t 等)后的純數(shù)字字符串中含有的數(shù)字。如果剩余字符串為空,則轉(zhuǎn)換結(jié)果為 0 。否則,將會(huì)從剩余字符串中“讀取”數(shù)字。當(dāng)類(lèi)型轉(zhuǎn)換出現(xiàn) error 時(shí)返回 NaN 。 |
例子:
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN(從字符串“讀取”數(shù)字,讀到 "z" 時(shí)出現(xiàn)錯(cuò)誤)
alert( Number(true) ); // 1
alert( Number(false) ); // 0
請(qǐng)注意 null
和 undefined
在這有點(diǎn)不同:null
變成數(shù)字 0
,undefined
變成 NaN
。
大多數(shù)數(shù)學(xué)運(yùn)算符也執(zhí)行這種轉(zhuǎn)換,我們將在下一節(jié)中進(jìn)行介紹。
布爾(boolean)類(lèi)型轉(zhuǎn)換是最簡(jiǎn)單的一個(gè)。
它發(fā)生在邏輯運(yùn)算中(稍后我們將進(jìn)行條件判斷和其他類(lèi)似的東西),但是也可以通過(guò)調(diào)用 Boolean(value) 顯式地進(jìn)行轉(zhuǎn)換。
轉(zhuǎn)換規(guī)則如下:
0
?、空字符串、?null
?、?undefined
?和 ?NaN
?)將變?yōu)?nbsp;?false
?。true
?。alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false
請(qǐng)注意:包含 0 的字符串 ?
"0"
? 是 ?true
?一些編程語(yǔ)言(比如 PHP)視
"0"
為false
。但在 JavaScript 中,非空的字符串總是true
。
alert( Boolean("0") ); // true alert( Boolean(" ") ); // 空格,也是 true(任何非空字符串都是 true)
有三種常用的類(lèi)型轉(zhuǎn)換:轉(zhuǎn)換為 string 類(lèi)型、轉(zhuǎn)換為 number 類(lèi)型和轉(zhuǎn)換為 boolean 類(lèi)型。
字符串轉(zhuǎn)換 —— 轉(zhuǎn)換發(fā)生在輸出內(nèi)容的時(shí)候,也可以通過(guò) String(value)
進(jìn)行顯式轉(zhuǎn)換。原始類(lèi)型值的 string 類(lèi)型轉(zhuǎn)換通常是很明顯的。
數(shù)字型轉(zhuǎn)換 —— 轉(zhuǎn)換發(fā)生在進(jìn)行算術(shù)操作時(shí),也可以通過(guò) Number(value)
進(jìn)行顯式轉(zhuǎn)換。
數(shù)字型轉(zhuǎn)換遵循以下規(guī)則:
值 | 變成…… |
---|---|
undefined
|
NaN
|
null
|
0
|
true / false
|
1 / 0
|
string
|
“按原樣讀取”字符串,兩端的空白字符(空格、換行符 \n 、制表符 \t 等)會(huì)被忽略??兆址兂?nbsp;0 。轉(zhuǎn)換出錯(cuò)則輸出 NaN 。 |
布爾型轉(zhuǎn)換 —— 轉(zhuǎn)換發(fā)生在進(jìn)行邏輯操作時(shí),也可以通過(guò) Boolean(value)
進(jìn)行顯式轉(zhuǎn)換。
布爾型轉(zhuǎn)換遵循以下規(guī)則:
值 | 變成…… |
---|---|
0 , null , undefined , NaN , ""
|
false
|
其他值 | true
|
上述的大多數(shù)規(guī)則都容易理解和記憶。人們通常會(huì)犯錯(cuò)誤的值得注意的例子有以下幾個(gè):
undefined
?進(jìn)行數(shù)字型轉(zhuǎn)換時(shí),輸出結(jié)果為 ?NaN
?,而非 ?0
?。"0"
? 和只有空格的字符串(比如:?" "
?)進(jìn)行布爾型轉(zhuǎn)換時(shí),輸出結(jié)果為 ?true
?。我們?cè)诒拘」?jié)沒(méi)有講 object 類(lèi)型的轉(zhuǎn)換。在我們學(xué)習(xí)完更多關(guān)于 JavaScript 的基礎(chǔ)知識(shí)后,我們會(huì)在專(zhuān)門(mén)介紹 object 的章節(jié) 對(duì)象 —— 原始值轉(zhuǎn)換 中詳細(xì)講解 object 類(lèi)型轉(zhuǎn)換。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: