[英]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 Number
和new 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.