簡體   English   中英

`2 == {}`和`{} == 2`之間有什么區別?

[英]What's difference between `2 == {}` and `{} == 2`

當我在Chrome開發者工具上鍵入2 == {}時,它將返回false ,但是當我輸入{} == 2 ,我會收到錯誤Uncaught SyntaxError: Unexpected token ==錯誤Uncaught SyntaxError: Unexpected token == 怎么了==做了什么?

{在句法上是模棱兩可的。 它用在表達式(對象文字語法, {foo: 42, bar: "hello"} )和語句中(塊, { foo(); bar(); baz(); } )。

如果{發生在語句的開頭,它總是被解析為塊的開頭。

從而

{} == 2

解析為

{
    // empty block
}
== 2  // syntax error

另一方面,在2 == {}{出現在表達式的中間並被視為對象。

這也是你如何使{} == 2工作:只要確保{不是第一個令牌,你可以通過寫({}) == 2({} == 2)來做。

您可以將其包裝在括號中以區別於塊語句 然后你得到了一個表象

({} === 2)

如果你在javascript中寫{},它意味着對象。 您可以在大括號{}中聲明對象。 所以{} == 2或2 == {}是相同的。在這種情況下,兩個statment都返回false。

在javascript中,對象是內存中由標識符引用的值。
可以將原始值與其他類型進行比較,但是當您嘗試比較未聲明的對象時,由於沒有標識符,因此無法進行比較。 如果你第一次聲明它:

var object ={};
object == 2;

這返回false因為現在有一個被引用對象的標識符。 當你沒有聲明它時,它就像一個塊。

暫無
暫無

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

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