在注視了Mozilla的(Firefox)的一些JavaScript代碼附加SDK,我看到了一種變量聲明我從來沒有見過的:使用Javascript - 分配多個變量,變量聲明中使用大括號對象屬性
var { foo, bar } = someFunction("whatever"); // just an example
查看變量名稱周圍的大括號?事實證明,這是一種將對象的屬性值同時分配給多個變量的方法。它看起來類似於destructuring assignment或PHP的list
,除了使用對象屬性而不是數組。
我實際上是通過一些小竅門找到的,因爲似乎沒有關於它的文檔。看看這段代碼:
function gimmeAnObject() {
return {
foo: "hey",
bar: "sup"
};
}
console.log(gimmeAnObject()); // Object { foo="hey", bar="sup" }
var { foo, bar } = gimmeAnObject();
console.log(foo); // hey
console.log(bar); // sup
我還發現,這隻適用於Firefox。 Chrome會拋出一個錯誤:「未捕獲的SyntaxError:意外的令牌{」。這解釋了爲什麼我在開始查看Firefox附加代碼之前沒有看到它。
以前有沒有其他人看過這種變量聲明?爲什麼我找不到任何文檔?由於它只適用於Firefox,我認爲這可能是一個Mozilla的事情,但我甚至無法在MDN上找到它。然後,也許我只是不知道要搜索什麼。
[常量聲明與塊]的可能重複(http://stackoverflow.com/questions/10199229/constant-declaration-with-block) –
發現這個問題,同時撰寫我自己的一個幾乎相同的問題:) – Motti