AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

JS 中 == 不檢查類型?不,你錯(cuò)了!

來(lái)源: 責(zé)編: 時(shí)間:2024-04-12 17:30:06 135觀看
導(dǎo)讀Hello,大家好,我是 Sunday。我們知道在 JS 中有兩種判斷相等的方式,即:== 和 ===。并且很多同學(xué)會(huì)認(rèn)為“==”運(yùn)算符(通常稱為“松散相等”或簡(jiǎn)稱“相等”)是不精準(zhǔn)的。“==”不關(guān)心數(shù)據(jù)類型,只關(guān)心值例如如下代碼:1 == '1' //

Hello,大家好,我是 Sunday。xqF28資訊網(wǎng)——每日最新資訊28at.com

我們知道在 JS 中有兩種判斷相等的方式,即:== 和 ===。并且很多同學(xué)會(huì)認(rèn)為“==”運(yùn)算符(通常稱為“松散相等”或簡(jiǎn)稱“相等”)是不精準(zhǔn)的。xqF28資訊網(wǎng)——每日最新資訊28at.com

“==”不關(guān)心數(shù)據(jù)類型,只關(guān)心值xqF28資訊網(wǎng)——每日最新資訊28at.com

例如如下代碼:xqF28資訊網(wǎng)——每日最新資訊28at.com

1 == '1' // true

而“===”運(yùn)算符,即“嚴(yán)格相等”,可以有效地驗(yàn)證操作數(shù)的值和類型:xqF28資訊網(wǎng)——每日最新資訊28at.com

1 === '1' // false

但是這種理解真的是完全正確的嗎?最近有一個(gè)同學(xué)在面試的時(shí)候被深入問(wèn)到了這個(gè)問(wèn)題,咱們來(lái)看一下:xqF28資訊網(wǎng)——每日最新資訊28at.com

“==”和“===” 的執(zhí)行邏輯

先說(shuō)結(jié)論,其實(shí):“==”和“===”這兩個(gè)運(yùn)算符都優(yōu)先考慮數(shù)據(jù)類型,并在執(zhí)行各自的算法之前執(zhí)行類型檢查。事實(shí)上,即使是“==”運(yùn)算符在評(píng)估值之前也會(huì)驗(yàn)證類型。xqF28資訊網(wǎng)——每日最新資訊28at.com

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

圖片圖片xqF28資訊網(wǎng)——每日最新資訊28at.com

下方描述為翻譯后的結(jié)果xqF28資訊網(wǎng)——每日最新資訊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 接受參數(shù) x(ECMAScript 語(yǔ)言值)和 y(ECMAScript 語(yǔ)言值),并返回包含布爾值的正常完成或拋出完成。 它提供 == 運(yùn)算符的語(yǔ)義。 調(diào)用時(shí)它執(zhí)行以下步驟: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 節(jié)中替換。5. 如果 x 是數(shù)字且 y 是字符串,則返回! IsLooselyEqual(x, !ToNumber(y))。6. 如果 x 是字符串且 y 是數(shù)字,則返回! 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 是字符串、數(shù)字、BigInt 或符號(hào)并且 y 是對(duì)象,則返回! IsLooselyEqual(x, ? ToPrimitive(y))。12. 如果 x 是對(duì)象并且 y 是字符串、數(shù)字、BigInt 或符號(hào),則返回! 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。

強(qiáng)制轉(zhuǎn)換涉及將一種類型的值轉(zhuǎn)換為另一種類型,可以通過(guò)有意操作顯式轉(zhuǎn)換,也可以通過(guò) JavaScript 機(jī)制隱式轉(zhuǎn)換,無(wú)需任何用戶干預(yù)。xqF28資訊網(wǎng)——每日最新資訊28at.com

另外一個(gè)有趣的方法,當(dāng)兩種類型匹配時(shí),將使用 IsStrictlyEqual 算法(步驟 1.a),該算法與“===”運(yùn)算符使用的算法完全相同。xqF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xqF28資訊網(wǎng)——每日最新資訊28at.com

翻譯之后為:xqF28資訊網(wǎng)——每日最新資訊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 接受參數(shù) x(ECMAScript 語(yǔ)言值)和 y(ECMAScript 語(yǔ)言值)并返回布爾值。 它提供 === 運(yùn)算符的語(yǔ)義。 調(diào)用時(shí)它執(zhí)行以下步驟:1. 如果 Type(x) 不是 Type(y),則返回 false。2. 如果 x 是一個(gè)數(shù)字,那么A。 返回 Number::equal(x, y)。3. 返回 SameValueNonNumber(x, y)。

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

圖片圖片xqF28資訊網(wǎng)——每日最新資訊28at.com

根據(jù)提供的代碼片段xqF28資訊網(wǎng)——每日最新資訊28at.com

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

此處,調(diào)用 ToNumber (y)函數(shù)時(shí)會(huì)發(fā)生隱式 強(qiáng)制轉(zhuǎn)換。此強(qiáng)制過(guò)程將值(y,即“1”)從其原始類型(在本例中為String)轉(zhuǎn)換為不同的類型(在本例中為Number)。在比較值之前,此步驟涉及類型檢查和強(qiáng)制,將兩個(gè)值對(duì)齊到同一類型(Number),從而實(shí)現(xiàn)兩個(gè)數(shù)字之間的直接比較。xqF28資訊網(wǎng)——每日最新資訊28at.com

1 == "1"  // true //步驟 1。// -> 檢查兩種類型// -> 兩種類型不同// -> 執(zhí)行 IsLooselyEqual 的后續(xù)步驟//步驟 2。   // -> "1 " (String) 將變成 1 (Number) - 強(qiáng)制機(jī)制//Step 3.   // -> 將值 1(數(shù)字,從左側(cè))與值 1(數(shù)字,在右側(cè))進(jìn)行比較

在這種情況下,嚴(yán)格相等運(yùn)算符將返回 false,如前面提供的內(nèi)容所示。由于兩種類型不同,因此 === 會(huì)判定為 false:xqF28資訊網(wǎng)——每日最新資訊28at.com

1 === "1"  // false //步驟 1.   // -> 檢查兩種類型// -> 兩種類型不同// -> 結(jié)束進(jìn)程,返回 false

總結(jié)

兩個(gè)比較運(yùn)算符都會(huì)檢查類型,但松散的相等運(yùn)算符(==) 需要執(zhí)行額外的步驟。xqF28資訊網(wǎng)——每日最新資訊28at.com

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

本文鏈接:http://www.tebozhan.com/showinfo-26-83277-0.htmlJS 中 == 不檢查類型?不,你錯(cuò)了!

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Python備份數(shù)據(jù)有哪些庫(kù)

下一篇: 前端神器AbortController:深度解析與實(shí)戰(zhàn)應(yīng)用

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 石頭智能洗地機(jī)A10 Plus體驗(yàn):雙向自清潔治好了我的懶癌

    一、前言和介紹專為家庭請(qǐng)假懶人而生的石頭科技在近日又帶來(lái)了自己的全新旗艦新品,石頭智能洗地機(jī)A10 Plus。從這個(gè)產(chǎn)品名上就不難看出,這次石頭推出的并不是常見(jiàn)的掃地機(jī)器
  • 8月總票房已突破10億!《封神》第一:口碑已經(jīng)成了

    8月5日消息,據(jù)燈塔專業(yè)版數(shù)據(jù),截至8月5日9時(shí)35分,8月總票房(含預(yù)售)已突破10億。其中,《封神》以大比分的優(yōu)勢(shì)領(lǐng)先。根據(jù)官方消息,目前該片總票房已經(jīng)超過(guò)14.
  • 2023 年的 Node.js 生態(tài)系統(tǒng)

    隨著技術(shù)的不斷演進(jìn)和創(chuàng)新,Node.js 在 2023 年達(dá)到了一個(gè)新的高度。Node.js 擁有一個(gè)龐大的生態(tài)系統(tǒng),可以幫助開(kāi)發(fā)人員更快地實(shí)現(xiàn)復(fù)雜的應(yīng)用。本文就來(lái)看看 Node.js 最新的生
  • 分享六款相見(jiàn)恨晚的PPT模版網(wǎng)站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網(wǎng)站旨在為全球Office用戶提供豐富的高品質(zhì)原創(chuàng)PPT模板、實(shí)用文檔、數(shù)據(jù)圖表及個(gè)性化定制服務(wù)。優(yōu)點(diǎn):OfficePLUS是微軟官方網(wǎng)站,囊括PPT模板、Word模
  • Flowable工作流引擎的科普與實(shí)踐

    一.引言當(dāng)我們?cè)谌粘9ぷ骱蜆I(yè)務(wù)中需要進(jìn)行各種審批流程時(shí),可能會(huì)面臨一系列技術(shù)和業(yè)務(wù)上的挑戰(zhàn)。手動(dòng)處理這些審批流程可能會(huì)導(dǎo)致開(kāi)發(fā)成本的增加以及業(yè)務(wù)復(fù)雜度的上升。在這
  • JVM優(yōu)化:實(shí)戰(zhàn)OutOfMemoryError異常

    一、Java堆溢出堆內(nèi)存中主要存放對(duì)象、數(shù)組等,只要不斷地創(chuàng)建這些對(duì)象,并且保證 GC Roots 到對(duì)象之間有可達(dá)路徑來(lái)避免垃 圾收集回收機(jī)制清除這些對(duì)象,當(dāng)這些對(duì)象所占空間超過(guò)
  • 騰訊VS網(wǎng)易,最卷游戲暑期檔,誰(shuí)能笑到最后?

    作者:無(wú)銹缽來(lái)源:財(cái)經(jīng)無(wú)忌7月16日晚,上海1862時(shí)尚藝術(shù)中心。伴隨著幻象的精準(zhǔn)命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰(zhàn)隊(duì)以絕對(duì)的優(yōu)勢(shì)戰(zhàn)勝了BLG戰(zhàn)隊(duì),拿下了總決
  • 機(jī)構(gòu)稱Q2國(guó)內(nèi)智能手機(jī)銷量同比下滑4% vivo份額重回第1

    7月29日消息,根據(jù)市場(chǎng)調(diào)查機(jī)構(gòu)Counterpoint Research公布的最新報(bào)告,2023年第2季度中國(guó)智能手機(jī)銷量同比下降4%,創(chuàng)新自2014年以來(lái)第2季度銷量新低。報(bào)
  • 2納米決戰(zhàn)2025

    集微網(wǎng)報(bào)道 從三強(qiáng)爭(zhēng)霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來(lái)。無(wú)論是老牌勁旅臺(tái)積電、三星,還是誓言重回先進(jìn)制程領(lǐng)先地位的英特爾,甚至初成立不久的新
Top