深入理解JavaScript強制類型轉(zhuǎn)換
一、強制類型轉(zhuǎn)換
強制類型轉(zhuǎn)換是指將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型的過程。在JavaScript中,這種轉(zhuǎn)換可以是顯式(調(diào)用轉(zhuǎn)換函數(shù))的或隱式的
基本類型轉(zhuǎn)換
主要涉及三種基本類型:字符串、數(shù)字和布爾值
轉(zhuǎn)換為字符串
將值轉(zhuǎn)換為字符串有多種方式,其中最常見的是通過調(diào)用String()函數(shù)或使用加號運算符(+)與空字符串相加 或者ES6的模板字符串 ‘ `` ’ 。
let num = 123; let str = String(num); // 顯式轉(zhuǎn)換 let str2 = num + ''; // 隱式轉(zhuǎn)換 console.log(str); // "123" console.log(str2); // "123"
轉(zhuǎn)換為數(shù)字
將值轉(zhuǎn)換為數(shù)字也有多種方式,可以使用Number()函數(shù)、加號運算符(+)、乘號運算符 *、parseInt()或parseFloat()等
let str = "456"; let num = Number(str); // 顯式轉(zhuǎn)換 let num2 = +str; // 隱式轉(zhuǎn)換 console.log(num); // 456 console.log(num2); // 456
parseInt()和parseFloat()用于解析字符串中的數(shù)字,但它們與Number()有所不同,因為它們不會處理非數(shù)值字符并且可以解析帶有小數(shù)點的字符串。
let str = "3.14"; console.log(parseInt(str)); // 3 console.log(parseFloat(str)); // 3.14
轉(zhuǎn)換為布爾值
所有值在JavaScript中都可以轉(zhuǎn)換為布爾值。JavaScript中有一些被認為是假值的值,它們轉(zhuǎn)換為布爾值時會得到false,包括:0、-0、null、undefined、NaN和空字符串("")。其他所有值都被認為是真值,轉(zhuǎn)換為布爾值時會得到true。
console.log(Boolean(0)); // false
console.log(Boolean("")); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined));// false
console.log(Boolean(NaN)); // false
console.log(Boolean(123)); // true
console.log(Boolean("hello")); // true
console.log(Boolean({})); // true
二、常見的強制類型轉(zhuǎn)換場景
相等運算符 == 與嚴格相等運算符 ===
在使用相等運算符== 時,JavaScript會進行強制類型轉(zhuǎn)換以比較不同類型的值。相反,嚴格相等運算符===不會進行類型轉(zhuǎn)換,只在兩個值類型相同且值相等時返回true。
console.log(123 == "123"); // true,字符串"123"被轉(zhuǎn)換為數(shù)字123 console.log(123 === "123"); // false,類型不同
算術(shù)運算符
當不同類型的值參與算術(shù)運算時,JavaScript會嘗試將它們轉(zhuǎn)換為數(shù)字
let result = "4" - 3; // "4" 被轉(zhuǎn)換為 4,結(jié)果為 1 console.log(result); // 1 result = "5" + 5; // 由于 + 運算符優(yōu)先進行字符串連接,結(jié)果為 "55" console.log(result); // "55"
邏輯運算符
邏輯運算符(&&、||、!)也會觸發(fā)類型轉(zhuǎn)換。它們通常會將操作數(shù)轉(zhuǎn)換為布爾值,以決定運算結(jié)果
console.log(!!"hello"); // true,非空字符串被轉(zhuǎn)換為 true console.log(!!0); // false,0 被轉(zhuǎn)換為 false console.log(null || "default"); // "default",null 被轉(zhuǎn)換為 false
三、避免強制類型轉(zhuǎn)換的陷阱
NaN陷阱
當嘗試將非數(shù)值字符串轉(zhuǎn)換為數(shù)字時,會得到NaN(Not-a-Number)
let result = Number("hello");
console.log(result); // NaN
null和undefined的特殊情況
null和undefined在進行類型轉(zhuǎn)換時有一些特殊的行為,需要特別注意。
console.log(Number(null)); // 0 console.log(Number(undefined)); // NaN
字符串連接與算術(shù)運算
由于+運算符既用于字符串連接又用于加法運算,容易引起混淆。
console.log("5" + 3); // "53",字符串連接
console.log("5" - 3); // 2,算術(shù)運算
到此這篇關(guān)于深入理解JavaScript強制類型轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)JavaScript強制類型轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Add a Formatted Table to a Word Document
Add a Formatted Table to a Word Document...2007-06-06
JS 動態(tài)獲取節(jié)點代碼innerHTML分析 [IE,FF]
在IE 環(huán)境下 賦值類型為對象時 innerHTML 獲取不到其改變,在FireFox環(huán)境下 .屬性 方式獲取不到其改變。2009-11-11
php main 與 iframe 相互通訊類(js+php同域/跨域)
這篇文章主要介紹了php main 與 iframe 相互通訊類(js+php同域/跨域),需要的朋友可以參考下2017-09-09
Javascript怎樣使用SessionStorage和LocalStorage
這篇文章主要介紹了Javascript怎樣使用SessionStorage和LocalStorage,對web存儲數(shù)據(jù)感興趣的同學(xué),可以參考下2021-04-04
怎樣使用?JavaScript?轉(zhuǎn)義字符串中的引號
要轉(zhuǎn)義字符串中的單引號或雙引號,需要在字符串內(nèi)容中的每個單引號或雙引號之前使用反斜杠?\?字符,例如?‘that’s?it’,這篇文章主要介紹了如何使用?JavaScript?轉(zhuǎn)義字符串中的引號,需要的朋友可以參考下2023-11-11
微信小程序開發(fā)(二):頁面跳轉(zhuǎn)并傳參操作示例
這篇文章主要介紹了微信小程序開發(fā)頁面跳轉(zhuǎn)并傳參操作,結(jié)合實例形式詳細分析了微信小程序頁面跳轉(zhuǎn)并傳參相關(guān)操作技巧,需要的朋友可以參考下2020-06-06

