首頁 > web前端 > js教程 > 解開 JavaScript 的'===”

解開 JavaScript 的'===”

Mary-Kate Olsen
發布: 2025-01-27 06:29:10
原創
472 人瀏覽過

Unraveling the

本指南深入研究了JavaScript嚴格的平等操作員(===)的複雜性,如Ecmascript規範的“嚴格平等比較”部分中定義。 讓我們逐步探索其功能:

===算法:詳細的外觀

===運算符採用以下算法來確定平等:>

  1. >

    鍵入檢查:運算符首先比較兩個值的類型。如果類型有所不同,則立即返回。 類型匹配僅在類型相同的情況下才能進行下一步。 > false

  2. 特定於類型的比較:

    • 數字:

        >評估
      • (差異的關鍵點)。 NaN === NaN> false數值相同的值返回
      • > true
      • >和
      • >被認為是等於( 0)。 -0 true
    • 字符串:;否則, true false
    • > booleans:
    • 均返回true === true。 否則,false === falsetrue false

    • 對象(包括數組和函數):

      >檢查>參考equality 。 只有兩個值指向相同的內存位置(同一對象)時,它才會返回=== true

    • and 返回null。但是,由於類型差異,undefinednull === null undefined === undefined true null === undefined false

      為什麼
  3. >
這是常見的混亂來源。 該規範將
(非數字)定義為與自身不平等的。這是因為

代表無效或未定義的數值結果。比較兩個不確定的結果,因為邏輯上的連貫性缺乏邏輯上的連貫性。 NaN === NaN>示例:false

可靠地檢查NaN>,使用NaN>或

>

>

<code class="language-javascript">NaN === NaN; // false</code>
登入後複製
登入後複製

為什麼NaNNumber.isNaN()Object.is()>

規格將
<code class="language-javascript">Number.isNaN(NaN); // true
Object.is(NaN, NaN); // true</code>
登入後複製
登入後複製

視為等效的,因為在大多數數學操作中,它們的行為是無法區分的。 但是,在特定方案中存在微妙的差異(例如,

0 === -0,而true則在

中產生)。 對於需要差異化的情況,請使用

0>

<code class="language-javascript">NaN === NaN; // false</code>
登入後複製
登入後複製

對象和引用相等(重溫)

比較對象時,=== 評估引用相等性。具有相同內容的兩個對像不被視為相等,除非它們在內存中是相同的對象:

<code class="language-javascript">Number.isNaN(NaN); // true
Object.is(NaN, NaN); // true</code>
登入後複製
登入後複製

但是:

<code class="language-javascript">Object.is(+0, -0); // false</code>
登入後複製

JavaScript 基礎知識的進一步探索

以上是解開 JavaScript 的'===”的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板