簡體   English   中英

為什么新的Number(2)!= JavaScript中的新字符串(“2”)

[英]Why does new Number(2) != new String(“2”) in JavaScript

以下評估為true

new Number(2) == 2
new String("2") == "2"

顯然,但以下情況也是如此:

"2" == 2
new Number(2) == "2"
new String("2") == 2

那么有人可以清楚地解釋為什么他的評價是false嗎?

new Number(2) == new String("2")

因為JavaScript具有數字和字符串(和布爾值)的原始版本和對象版本。 new Numbernew String創建對象版本,當您使用帶對象引用的==時,您將比較對象引用,而不是值。

new String(x)String(x)是根本不同的東西(對於Number也是如此)。 使用 new運算符,您將創建一個對象。 沒有 new運算符,你正在進行類型強制 - 例如String(2)給你"2"Number("2")給你2

我認為==基本上是值得比較。

在上述所有情況下,它只是在比較價值觀。 但在這一個

new Number(2) == new String("2")

兩者都是對象,因此它不會比較值,它會嘗試比較對象引用的值。 這就是它返回false的原因。

你試一試:

new Number(2) == new Number(2)

返回

你將得到答案:有2個不同的對象有2個不同的引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM