[英]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)
來做。
如果你在javascript中寫{},它意味着對象。 您可以在大括號{}中聲明對象。 所以{} == 2或2 == {}是相同的。在這種情況下,兩個statment都返回false。
在javascript中,對象是內存中由標識符引用的值。
可以將原始值與其他類型進行比較,但是當您嘗試比較未聲明的對象時,由於沒有標識符,因此無法進行比較。 如果你第一次聲明它:
var object ={};
object == 2;
這返回false
因為現在有一個被引用對象的標識符。 當你沒有聲明它時,它就像一個塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.