javascript中的"x != x"

來源:互聯網
上載者:User

標籤:數值   函數   需要   空間   ==   als   ber   number   簡寫   

在javascript的運用中,經常遇到判斷兩個 對象/值 是否相等的情況。有些表明上看著一樣,其實他們不一樣。有些特殊情況,需要我們辨別。

參考型別

他們都是參考型別,儲存的空間將從堆中分配。變數處的值是一個指標,指向儲存物件的記憶體處。

具有相同屬性的兩個對象。
var a = { x : 1 }var b = { x : 1 }a === b // false  兩個單獨的對象永不相等a == b // false  兩個單獨的對象永不相等

他們實際是new Object()的簡寫。初始設定變數a時候,賦了一個對象值,那麼在堆中開闢了一個新空間。
初始設定變數b時候,也是開闢了一個新空間。兩個變數,所指向的記憶體位址是不一樣的。

兩個單獨的空數組.
var a = [], b = []a === b // false  兩個單獨的數組永不相等。a == b // false  兩個單獨的數組永不相等。

以上兩個例子,原理相同。

原始類型判斷Number類型的值是否為NaN

ECMAScript (ES6)包含Number.isNaN()函數。
通過Number.isNaN(x)來檢測變數x是否是一個非數值。然而,在缺少Number.isNaN函數的情況下,通過運算式(x != x)來檢測變數x是否是NaN會更加可靠。

String類型

String類型,我目前沒有發現相同字面量,會不相等的情況。

Symbol類型
const s1 = Symbol() const s2 = Symbol()s1 == s2 // falses1 === s2 // false

Symbol()函數返回symbol類型的值,都是唯一的,不相等的,並且具有靜態屬性和靜態方法。

[完]

javascript中的"x != x"

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.