js 基本字符串和字符串對象

有人問
var a = new String (‘abc’);
var b = ‘abc’;spa

a==b返回的是T仍是F.對象

我理所固然的選擇了T. 此處用的是雙等號, 三等號應該就是false了. 圖片

實際上用控制檯跑一遍, a == b 返回了 true, a === b 返回了 false,
用typeof 來檢驗一下兩者的類型:
typeof(b) >>>"string"
typeof(a) >>>"object"字符串

=== (全等於)的定義 :
當被比較的值類型相同,值也相同, 兩個值全等. 注意一下 number 類型的特例,兩個 NaN是不全等的, +0 和 -0 是全等的.
對於複雜類型有:" 一個值只與自身全等」, 因此複雜類型的全等實際上是在比較引用. string

案例裏, 從數據類型看: b是基本字符串(或者稱字符串常量). A是字符串對象. 經過valueOf() 和new String() 兩者的類型能夠互相轉化. it

在存儲方式看: 基本字符串是存放在棧裏的, 字符串對象是存放在堆裏的, 對象的引用存放於棧.class

圖片描述

綜上, a === b 獲得了false的結果, 也不難理解了. object

PS: 類比一下, number 和boolean 也有基本值和對象值的差異.數據類型

相關文章
相關標籤/搜索