Вопрос по variable-assignment, mozilla, javascript – Javascript - Назначение нескольких переменных для свойств объекта с помощью фигурных скобок в объявлении переменной

11

Просматривая некоторый код Javascript для SDK надстройки Mozilla (Firefox), я обнаружил вид объявления переменных, которого раньше не видел:

var { foo, bar } = someFunction("whatever");  // just an example

Видите эти фигурные скобки вокруг имени переменной? Оказывается, это способ присвоения значений свойств объекта нескольким переменным одновременно. Похоже надеструктурирующее задание или PHPlist, за исключением свойств объекта вместо массивов.

Я на самом деле узнал об этом, немного поигравшись, так как, похоже, нет документации по этому вопросу. Посмотрите на этот код:

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 выдаст ошибку: & quot;Uncaught SyntaxError: Unexpected token {& Quot ;. Это объясняет, почему я не видел его до того, как начал изучать код дополнения Firefox.

Кто-нибудь еще видел такое объявление переменных раньше? Почему я не могу найти какую-либо документацию по этому вопросу? Поскольку он работает только в Firefox, я думаю, что это может быть Mozilla, но я даже не смог найти ничего об этом в MDN. Опять же, может быть, я просто не знал, что искать.

возможный дубликатConstant declaration with block Wladimir Palant
Нашел этот вопрос при составлении почти идентичного моего вопроса :) Motti

Ваш Ответ

2   ответа
0

этого:

var myObj = (function(){
    return {
        foo: 'foo',
        bar: 'bar'
    };
})();
Error: User Rate Limit Exceeded grant
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
5

http://en.wikipedia.org/wiki/JavaScript_syntax#Assignment а такжеhttp://dailyjs.com/2011/09/12/destructuring/) похоже на эту конструкциюis деструктурирующее задание.

Википедия:

In Mozilla's JavaScript, since version 1.7, destructuring assignment allows the assignment of parts of data structures to several variables at once. The left hand side of an assignment is a pattern that resembles an arbitrarily nested object/array literal containing l-lvalues at its leafs which are to receive the substructures of the assigned value.

В JavaScript массивы и объекты более или менее одинаковы, поэтому неудивительно, что конструкции, поддерживаемые для массивов, также поддерживаются для объектов.

Error: User Rate Limit Exceeded grant

Похожие вопросы