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