詳解JavaScript中的數(shù)據(jù)類型轉(zhuǎn)換
隱式轉(zhuǎn)換
JavaScript中的隱式轉(zhuǎn)換是指在表達(dá)式中自動發(fā)生的數(shù)據(jù)類型轉(zhuǎn)換。這種轉(zhuǎn)換通常是基于操作符和操作數(shù)的數(shù)據(jù)類型,以滿足表達(dá)式的求值需求。
相對于顯式轉(zhuǎn)換,隱式轉(zhuǎn)換是自動發(fā)生的,開發(fā)人員無法控制。
布爾值的隱式轉(zhuǎn)換
在JavaScript中,大多數(shù)操作符都會將操作數(shù)隱式轉(zhuǎn)換為布爾類型。
console.log(!!"hello"); // true console.log(!!0); // false console.log(!!""); // false console.log(!!null); // false
數(shù)學(xué)運(yùn)算符的隱式轉(zhuǎn)換
在對各種非Number類型運(yùn)用數(shù)學(xué)運(yùn)算符(- * /)時(shí),會先將非Number類型轉(zhuǎn)換為Number類型;
1 - true // 0 1 - null // 1 1 * undefined // NaN 2 * ['5'] // 10 2 * ['5', '10'] // NaN 2 * {} // NaN
==
的隱式轉(zhuǎn)換
- 字符串和數(shù)字
如果一個(gè)操作數(shù)是字符串,另一個(gè)操作數(shù)是數(shù)字,JavaScript會嘗試將字符串轉(zhuǎn)換為數(shù)字,然后進(jìn)行比較。
console.log("10" == 10); // true
- 布爾值和其他類型
如果一個(gè)操作數(shù)是布爾值,另一個(gè)操作數(shù)是非布爾類型的值,布爾值會被轉(zhuǎn)換為相應(yīng)的數(shù)值進(jìn)行比較。
console.log(true == 1); // true console.log(false == 0); // true
- null 和 undefined
null 和 undefined 在比較時(shí)相互之間相等,但與其他類型的值不相等。即 null == undefined
返回 true
,而 null == 0
或 null == ""
返回 false
。
- NaN
NaN與任何類型比較都返回false,包括它自己。
console.log(NaN == NaN); // false
- 原始類型與對象類型
原始類型和引用類型做比較時(shí),對象類型會遵循ECMAScript
規(guī)范規(guī)定的toPrimitive
原則轉(zhuǎn)換為原始類型。
'[object Object]' == {} // true
顯式轉(zhuǎn)換
顯式轉(zhuǎn)換是通過一些內(nèi)置函數(shù)或操作符來明確地將一個(gè)數(shù)據(jù)類型轉(zhuǎn)換為另一個(gè)數(shù)據(jù)類型。這種轉(zhuǎn)換通常是開發(fā)人員有意識地進(jìn)行的。
字符串轉(zhuǎn)換
在JavaScript中,可以使用toString()
方法將其他數(shù)據(jù)類型轉(zhuǎn)換為字符串類型。例如:
var num = 10; var str = num.toString(); console.log(typeof str); // "string"
數(shù)字轉(zhuǎn)換
可以使用parseInt()
或parseFloat()
函數(shù)將字符串轉(zhuǎn)換為數(shù)字類型。例如:
var str = "10"; var num = parseInt(str); console.log(typeof num); // "number"
布爾值轉(zhuǎn)換
可以使用Boolean()
函數(shù)將其他數(shù)據(jù)類型轉(zhuǎn)換為布爾類型。以下是一些示例:
console.log(Boolean(0)); // false console.log(Boolean("hello")); // true console.log(Boolean(null)); // false
特殊轉(zhuǎn)換
JavaScript還提供了一些特殊的數(shù)據(jù)類型轉(zhuǎn)換方法。
數(shù)組轉(zhuǎn)換為字符串
可以使用join()
方法將數(shù)組轉(zhuǎn)換為字符串:
var arr = [1, 2, 3]; var str = arr.join(","); console.log(str); // "1,2,3"
字符串轉(zhuǎn)換為數(shù)組
可以使用split()
方法將字符串轉(zhuǎn)換為數(shù)組:
var str= "1,2,3"; var arr = str.split(","); console.log(arr); // [1, 2, 3]
以上就是詳解JavaScript中的數(shù)據(jù)類型轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于JavaScript數(shù)據(jù)類型轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!
- 基于JS實(shí)現(xiàn)將JSON數(shù)據(jù)轉(zhuǎn)換為TypeScript類型聲明的工具
- JavaScript數(shù)據(jù)類型的轉(zhuǎn)換詳解
- JavaScript那些不經(jīng)意間發(fā)生的數(shù)據(jù)類型自動轉(zhuǎn)換
- JavaScript數(shù)據(jù)類型轉(zhuǎn)換實(shí)例(其他類型轉(zhuǎn)字符串、數(shù)值型、布爾類型)
- JavaScript的數(shù)據(jù)類型轉(zhuǎn)換原則(干貨)
- JavaScript轉(zhuǎn)換數(shù)據(jù)庫DateTime字段類型方法
相關(guān)文章
JavaScript正則表達(dá)式匹配 div style標(biāo)簽
這篇文章主要介紹了JavaScript正則表達(dá)式匹配<div><style>標(biāo)簽 的相關(guān)資料,需要的朋友可以參考下2016-03-03JavaScript高級程序設(shè)計(jì) XML、Ajax 學(xué)習(xí)筆記
JavaScript高級程序設(shè)計(jì) XML、Ajax 學(xué)習(xí)筆記,需要的朋友可以參考下。2011-09-09實(shí)例詳解BootStrap的動態(tài)模態(tài)框及靜態(tài)模態(tài)框
要用bootStrap這個(gè)框架就必須要重載它的class類,也就是說class要一樣。接下來通過實(shí)例代碼給大家介紹BootStrap的動態(tài)模態(tài)框及靜態(tài)模態(tài)框,需要的朋友可以參考下2018-08-08JavaScript高級程序設(shè)計(jì) 閱讀筆記(十四) js繼承機(jī)制的實(shí)現(xiàn)
繼承是面向?qū)ο笳Z言的必備特征,即一個(gè)類能夠重用另一個(gè)類的方法和屬性。在JavaScript中繼承方式的實(shí)現(xiàn)方式主要有以下五種:對象冒充、call()、apply()、原型鏈、混合方式2012-08-08刪除數(shù)組條目中重復(fù)的條目(可能有多個(gè)),返回值是一個(gè)僅包含被刪除的重復(fù)條目的新數(shù)組。
刪除數(shù)組條目中重復(fù)的條目(可能有多個(gè)),返回值是一個(gè)僅包含被刪除的重復(fù)條目的新數(shù)組。...2007-09-09如何實(shí)現(xiàn)JavaScript動態(tài)加載CSS和JS文件
這篇文章主要為大家詳細(xì)介紹了JavaScript動態(tài)加載CSS和JS文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-10-10