国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

17道題讓你徹底理解JS中的類型轉換

2024-05-06 15:36:03
字體:
來源:轉載
供稿:網友

前言

類型轉換是將值從一種類型轉換為另一種類型的過程(比如字符串轉數字,對象轉布爾值等)。任何類型不論是原始類型還是對象類型都可以進行類型轉換,JavaScript 的原始類型有:number, string, boolean, null, undefined, Symbol。

本文將通過 17 道題目來深入的了解 JS 中的類型轉換,通過閱讀本文之后,你將能自信的回答出下面題目的答案,并且能夠理解背后的原理。在文章的最后,我講寫出答案并解釋。在看答案之前,你可以把答案寫下來,最后再對照一下,便于找出理解有誤的地方。

true + false12 / "6""number" + 15 + 315 + 3 + "number"[1] > null"foo" + + "bar""true" == truefalse == "false"null == ""!!"false" == !!"true"["x"] == "x"[] + null + 1[1,2,3] == [1,2,3]{} + [] + {} + [1]! + [] + [] + ![]new Date(0) - 0new Date(0) + 0

類似于上面的這些問題大概率也會在 JS 面試中被問到, 所以繼續往下讀。

隱式 vs 顯式類型轉換

類型轉換可以分為隱式類型轉換和顯式類型轉換。

當開發人員通過編寫適當的代碼(如Number(value))用于在類型之間進行轉換時,就稱為顯式類型強制轉換(或強制類型轉換)。

然而 JavaScript 是弱類型語言,在某些操作下,值可以在兩種類型之間自動的轉換,這叫做隱式類型轉換。在對不同類型的值使用運算符時通常會發生隱式類型轉換。比如 1 == null, 2 / "5", null + new Date() 。當值被 if 語句包裹時也有可能發生,比如 if(value) {} 會將 value 轉換為 boolean類型。

嚴格相等運算符(===)不會觸發類型隱式轉換,所以它可以用來比較值和類型是否都相等。

隱式類型轉換是一把雙刃劍,使用它雖然可以寫更少的代碼但有時候會出現難以被發現的bug。

三種類型轉換

我們需要知道的第一個規則是:在 JS 中只有 3 種類型的轉換

to string to boolean to number

第二,類型轉換的邏輯在原始類型和對象類型上是不同的,但是他們都只會轉換成上面 3 種類型之一。

我們首先分析一下原始類型轉換。

String 類型轉換

String() 方法可以用來顯式將值轉為字符串,隱式轉換通常在有 + 運算符并且有一個操作數是 string 類型時被觸發,如:

String(123) // 顯式類型轉換123 + '' // 隱式類型轉換

所有原始類型轉 String 類型

String(123) // '123'String(-12.3) // '-12.3'String(null) // 'null'String(undefined) // 'undefined'String(true) // 'true'

Symbol 類型轉 String 類型是比較嚴格的,它只能被顯式的轉換

String(Symbol('symbol')) // 'Symbol(symbol)''' + Symbol('symbol') // TypeError is thrown            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 乌什县| 烟台市| 珲春市| 米易县| 建瓯市| 泗阳县| 天等县| 富阳市| 彭州市| 健康| 晋宁县| 乌兰察布市| 漳州市| 容城县| 奈曼旗| 明溪县| 哈尔滨市| 日土县| 汉川市| 靖州| 石首市| 搜索| 兰州市| 仙桃市| 河间市| 汶上县| 久治县| 长泰县| 金湖县| 阳谷县| 武平县| 丰城市| 井冈山市| 张掖市| 盘锦市| 大关县| 泰宁县| 吉水县| 仁布县| 台安县| 吉林省|