日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

JS 中 == 不檢查類型?不,你錯了!

來源: 責編: 時間:2024-04-12 17:30:06 224觀看
導讀Hello,大家好,我是 Sunday。我們知道在 JS 中有兩種判斷相等的方式,即:== 和 ===。并且很多同學會認為“==”運算符(通常稱為“松散相等”或簡稱“相等”)是不精準的。“==”不關心數據類型,只關心值例如如下代碼:1 == '1' //

Hello,大家好,我是 Sunday。akT28資訊網——每日最新資訊28at.com

我們知道在 JS 中有兩種判斷相等的方式,即:== 和 ===。并且很多同學會認為“==”運算符(通常稱為“松散相等”或簡稱“相等”)是不精準的。akT28資訊網——每日最新資訊28at.com

“==”不關心數據類型,只關心值akT28資訊網——每日最新資訊28at.com

例如如下代碼:akT28資訊網——每日最新資訊28at.com

1 == '1' // true

而“===”運算符,即“嚴格相等”,可以有效地驗證操作數的值和類型:akT28資訊網——每日最新資訊28at.com

1 === '1' // false

但是這種理解真的是完全正確的嗎?最近有一個同學在面試的時候被深入問到了這個問題,咱們來看一下:akT28資訊網——每日最新資訊28at.com

“==”和“===” 的執行邏輯

先說結論,其實:“==”和“===”這兩個運算符都優先考慮數據類型,并在執行各自的算法之前執行類型檢查。事實上,即使是“==”運算符在評估值之前也會驗證類型。akT28資訊網——每日最新資訊28at.com

根據 JavaScript 規范參考 ECMAScript 262 文檔,概述了 IsLooselyEqual算法 ,負責處理“==”操作。這里說明了涉及 14 個步驟的綜合過程。值得注意的是,這個過程大量涉及類型檢查,如涉及Type(x)的初始步驟所證明的那樣,并引入強制作為整個操作的重要方式。akT28資訊網——每日最新資訊28at.com

圖片圖片akT28資訊網——每日最新資訊28at.com

下方描述為翻譯后的結果akT28資訊網——每日最新資訊28at.com

// 在線地址:https://262.ecma-international.org/14.0/?_gl=1*1ddd25w*_ga*MTAzMTk1MjUwNS4xNzA0MTgwNDk0*_ga_TDCK4DWEPP*MTcwNDE4MDQ5NC4xLjAuMTcwNDE4MDQ5NC4wLjAuMA..&_ga=2.72864531.1838071013.1704180495-1031952505.1704180494#sec-islooselyequal7.2.14 松散相等 ( x, y )抽象操作 IsLooselyEqual 接受參數 x(ECMAScript 語言值)和 y(ECMAScript 語言值),并返回包含布爾值的正常完成或拋出完成。 它提供 == 運算符的語義。 調用時它執行以下步驟:1. 如果 Type(x) 是 Type(y),則A。 A。 返回 IsStrictlyEqual(x, y)。2. 如果 x 為 null 并且 y 未定義,則返回 true。3. 如果 x 未定義且 y 為 null,則返回 true。4. 注意:此步驟已在 B.3.6.2 節中替換。5. 如果 x 是數字且 y 是字符串,則返回! IsLooselyEqual(x, !ToNumber(y))。6. 如果 x 是字符串且 y 是數字,則返回! IsLooselyEqual(!ToNumber(x), y)。7. 如果 x 是 BigInt 并且 y 是 String,則A。 令 n 為 StringToBigInt(y)。b. 如果 n 未定義,則返回 false。C。 返回 ! IsLooselyEqual(x, n)。8. 如果 x 是 String 并且 y 是 BigInt,則返回! IsLooselyEqual(y, x)。9. 如果 x 是布爾值,則返回! IsLooselyEqual(!ToNumber(x), y)。10. 如果 y 是布爾值,則返回! IsLooselyEqual(x, !ToNumber(y))。11. 如果 x 是字符串、數字、BigInt 或符號并且 y 是對象,則返回! IsLooselyEqual(x, ? ToPrimitive(y))。12. 如果 x 是對象并且 y 是字符串、數字、BigInt 或符號,則返回! IsLooselyEqual(? ToPrimitive(x), y)。13. 如果 x 是 BigInt 并且 y 是 Number,或者如果 x 是 Number 并且 y 是 BigInt,則A。 A。 如果 x 不是有限的或 y 不是有限的,則返回 false。b. b. 如果 ?(x) = ?(y),則返回 true; 否則返回 false。14. 返回 false。

強制轉換涉及將一種類型的值轉換為另一種類型,可以通過有意操作顯式轉換,也可以通過 JavaScript 機制隱式轉換,無需任何用戶干預。akT28資訊網——每日最新資訊28at.com

另外一個有趣的方法,當兩種類型匹配時,將使用 IsStrictlyEqual 算法(步驟 1.a),該算法與“===”運算符使用的算法完全相同。akT28資訊網——每日最新資訊28at.com

圖片圖片akT28資訊網——每日最新資訊28at.com

翻譯之后為:akT28資訊網——每日最新資訊28at.com

// 在線地址:https://262.ecma-international.org/14.0/?_gl=1*1ddd25w*_ga*MTAzMTk1MjUwNS4xNzA0MTgwNDk0*_ga_TDCK4DWEPP*MTcwNDE4MDQ5NC4xLjAuMTcwNDE4MDQ5NC4wLjAuMA..&_ga=2.72864531.1838071013.1704180495-1031952505.1704180494#sec-isstrictlyequal7.2.15 IsStrictlyEqual(x,y)抽象操作 IsStrictlyEqual 接受參數 x(ECMAScript 語言值)和 y(ECMAScript 語言值)并返回布爾值。 它提供 === 運算符的語義。 調用時它執行以下步驟:1. 如果 Type(x) 不是 Type(y),則返回 false。2. 如果 x 是一個數字,那么A。 返回 Number::equal(x, y)。3. 返回 SameValueNonNumber(x, y)。

讓我們深入研究 IsLooselyEqual的第五步(如果 x 是數字且 y 是字符串,則返回! IsLooselyEqual(x, !ToNumber(y))):akT28資訊網——每日最新資訊28at.com

圖片圖片akT28資訊網——每日最新資訊28at.com

根據提供的代碼片段akT28資訊網——每日最新資訊28at.com

1 == "1"  // true // x 是數字 (1) // y 是字符串 ("1")

此處,調用 ToNumber (y)函數時會發生隱式 強制轉換。此強制過程將值(y,即“1”)從其原始類型(在本例中為String)轉換為不同的類型(在本例中為Number)。在比較值之前,此步驟涉及類型檢查和強制,將兩個值對齊到同一類型(Number),從而實現兩個數字之間的直接比較。akT28資訊網——每日最新資訊28at.com

1 == "1"  // true //步驟 1。// -> 檢查兩種類型// -> 兩種類型不同// -> 執行 IsLooselyEqual 的后續步驟//步驟 2。   // -> "1 " (String) 將變成 1 (Number) - 強制機制//Step 3.   // -> 將值 1(數字,從左側)與值 1(數字,在右側)進行比較

在這種情況下,嚴格相等運算符將返回 false,如前面提供的內容所示。由于兩種類型不同,因此 === 會判定為 false:akT28資訊網——每日最新資訊28at.com

1 === "1"  // false //步驟 1.   // -> 檢查兩種類型// -> 兩種類型不同// -> 結束進程,返回 false

總結

兩個比較運算符都會檢查類型,但松散的相等運算符(==) 需要執行額外的步驟。akT28資訊網——每日最新資訊28at.com

  • 它首先檢查比較值的類型,如果它們不同,則將它們對齊到相同類型(使用隱式強制),
  • 然后繼續進行值比較。 使用嚴格相等運算符(===)時,不涉及該額外步驟。在值不同的情況下,它直接返回 false。

本文鏈接:http://m.www897cc.com/showinfo-26-83277-0.htmlJS 中 == 不檢查類型?不,你錯了!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python備份數據有哪些庫

下一篇: 前端神器AbortController:深度解析與實戰應用

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
理论片一区二区在线| 亚洲在线视频免费观看| 国产亚洲欧美aaaa| 国语自产精品视频在线看8查询8| 一色屋精品视频在线观看网站| 亚洲狠狠丁香婷婷综合久久久| 亚洲美女视频在线观看| 一本色道久久88精品综合| 亚洲在线日韩| 欧美88av| 国产精品一区二区久久久久| 亚洲成色精品| 亚洲一区二区在线观看视频| 久久久精品性| 欧美午夜无遮挡| 一区在线观看视频| 中文日韩在线视频| 久久久av网站| 欧美三级资源在线| 激情综合色丁香一区二区| 日韩视频在线一区二区三区| 欧美一区二区在线播放| 欧美激情无毛| 国产一区免费视频| 一二三四社区欧美黄| 久久精品首页| 欧美亚洲动漫精品| 亚洲韩国日本中文字幕| 午夜精彩视频在线观看不卡| 欧美va亚洲va香蕉在线| 国产精品久久久久毛片软件| 亚洲承认在线| 先锋影音久久久| 欧美日本在线看| 影音先锋亚洲电影| 亚洲欧美日韩一区二区在线| 欧美激情亚洲国产| 狠狠色狠狠色综合日日91app| 亚洲视频观看| 欧美黄色影院| 一区视频在线| 欧美一区=区| 欧美午夜美女看片| 亚洲品质自拍| 开心色5月久久精品| 国产日韩精品入口| 在线一区免费观看| 欧美成人中文| 在线观看欧美亚洲| 久久se精品一区精品二区| 欧美日韩专区在线| 亚洲精品一区中文| 蜜臀av国产精品久久久久| 国产一区二区三区不卡在线观看 | 最新国产成人av网站网址麻豆| 欧美伊人久久久久久久久影院| 欧美视频在线视频| 亚洲精品小视频| 蜜桃久久精品乱码一区二区| 国产又爽又黄的激情精品视频| 亚洲欧美综合另类中字| 国产精品igao视频网网址不卡日韩| 亚洲精品一区二区网址| 欧美成年人视频网站| 精品成人在线视频| 久久久999| 国内精品伊人久久久久av影院 | 欧美大胆成人| 精品成人国产在线观看男人呻吟| 欧美伊人久久久久久久久影院 | 91久久精品国产91久久性色| 久久免费国产精品1| 国产综合自拍| 久久久国产精品一区二区中文| 国产日韩亚洲欧美| 欧美一区二区三区视频免费| 国产精品亚洲成人| 午夜视频精品| 国模吧视频一区| 久久免费视频这里只有精品| 国内自拍一区| 久久中文久久字幕| 亚洲电影激情视频网站| 免费成人av在线看| 亚洲欧洲日产国产综合网| 欧美高清视频一二三区| 亚洲精品一品区二品区三品区| 欧美精品一区视频| 一本色道久久88综合亚洲精品ⅰ| 欧美视频一区| 亚洲影音一区| 国产一级一区二区| 久久午夜电影网| 亚洲黄色成人| 欧美午夜不卡视频| 亚洲欧美精品在线观看| 国产欧美丝祙| 久久久视频精品| 亚洲国产精品福利| 欧美日韩精品免费观看| 亚洲一区二区在线免费观看视频| 国产精品一区免费观看| 欧美一乱一性一交一视频| 韩日欧美一区二区| 欧美成人免费在线视频| av成人免费在线观看| 国产精品久久久久免费a∨大胸| 欧美一级播放| 亚洲成人资源| 欧美午夜剧场| 久久久久久久久久久久久久一区 | 欧美日韩精品免费观看视一区二区| 中文av一区二区| 国产麻豆综合| 久久综合久久美利坚合众国| 亚洲人妖在线| 国产精品欧美久久| 久久久久久尹人网香蕉| 亚洲国产三级网| 国产精品vip| 久久久久久一区二区| 亚洲精品中文字幕有码专区| 国产精品你懂的在线| 久久婷婷人人澡人人喊人人爽| 亚洲最快最全在线视频| 国产偷国产偷精品高清尤物| 欧美国产91| 午夜一区二区三视频在线观看| 一区二区三区我不卡| 欧美日韩国产综合网| 欧美中文字幕不卡| 日韩一级黄色av| 国产自产精品| 欧美日韩一区二区视频在线| 久久精品国产v日韩v亚洲| 亚洲伦理在线免费看| 国产日韩欧美夫妻视频在线观看| 欧美国产日韩a欧美在线观看| 午夜精品一区二区三区四区 | 亚洲精品老司机| 国产视频在线观看一区二区三区| 欧美国产日本| 久久精品一区二区国产| 99精品视频网| 影音先锋中文字幕一区| 欧美性理论片在线观看片免费| 久热国产精品| 午夜亚洲福利| 在线综合亚洲| 亚洲国产天堂久久综合网| 国产精品一区二区三区乱码| 欧美成人资源网| 久久久国产精彩视频美女艺术照福利| 亚洲最新中文字幕| 在线观看亚洲| 国产片一区二区| 欧美三级视频在线观看| 女人天堂亚洲aⅴ在线观看| 性欧美长视频| 亚洲天堂成人在线观看| 91久久精品国产91久久性色| 国产一本一道久久香蕉| 国产精品久久久久一区二区| 欧美久久久久久久久| 免费看av成人| 久久久久九九九九| 小处雏高清一区二区三区| 一本色道久久综合| 亚洲国产日日夜夜| 一区二区在线不卡| 国产婷婷色一区二区三区| 国产精品久久久久久久久久三级| 欧美久久一级| 欧美成人亚洲成人| 久久嫩草精品久久久精品| 欧美一区二区在线播放| 亚洲午夜国产成人av电影男同| 亚洲人成7777| 亚洲国产欧美一区二区三区丁香婷| 国外成人免费视频| 国产日韩免费| 国产乱人伦精品一区二区 | 亚洲国产精品久久久久婷婷884 | 亚洲一区二区免费| 99精品福利视频| 亚洲乱码国产乱码精品精可以看| 亚洲国产日本| 最新国产拍偷乱拍精品| 亚洲国产精品嫩草影院| 一区在线观看视频| 精品电影在线观看| 伊人成综合网伊人222| 狠狠狠色丁香婷婷综合激情| 国产偷国产偷亚洲高清97cao | 一区久久精品| 一区二区三区在线视频播放| 国产在线播放一区二区三区| 国产亚洲欧美一区二区三区| 国产精品视频导航| 国产精品一区一区| 国产日韩欧美另类| 国产偷久久久精品专区| 国产伪娘ts一区| 国内久久精品视频|