簡體   English   中英

為什么“花括號”在JavaScript中的行為有所不同?

[英]Why Curly Brackets behave differently in JavaScript?

據我所知,JavaScript遵循ECMA規范,因此,

var x=[2,3,4] // represents array

var y= {"a":1,"b":2,"c":3} // represents object with key/value pair

但由於以下兩個示例,我感到困惑:

范例1:

{"a","b","c"} // Is valid with return type --> "c"

范例2:

var x={"a","b","c"} // Is Invalid

有人可以解釋一下最后兩個示例的結果原因嗎?

大括號用於JavaScript中的兩件事。

  1. 對象文字周圍的分隔符,如var y= {"a":1,"b":2,"c":3}
  2. 語句塊周圍的定界符,如if (y) { x = 1; z = 2; } if (y) { x = 1; z = 2; }

如果{在語句的開頭,則將其視為第二種類型,因此將其解析為語句塊。 這就是您的示例2。 該語句是表達式"a","b","c" 該語句使用逗號運算符 ,因此其值是最后一個表達式,即"c" 在一個函數中,您需要使用return來返回該值,但是當您在JavaScript控制台中鍵入一條語句時,該語句將自動求值並打印該值。

示例2是類型1,但是對象內容的語法無效,因此會出現錯誤。

如上面注釋中其他人所述,僅在使用{}而不分配變量時才使用表達式。 這就是為什么它將記錄最后評估的表達式的原因。 在第二種情況下,這是不正確的對象初始化。 可能的方案是:

var x = {"a","b","c"}; //Invalid as object properties incorrectly defined.
var y = ["a","b","c"]; // Correct if you want an array with these elements.
var z = {
   a: "some value",
   b: "some value",
   c: "some value"
};  // Also correct if you want a,b,c as properties of an object.

暫無
暫無

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

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