Не уверен, что это синтаксис JS, специфичный для Mozilla, но я часто обнаруживал, что переменные объявляются таким образом, например, в дополнительных документах SDK :
var { Hotkey } = require("sdk/hotkeys");
и в различных Chrome Javascript ( let
вместо этого используется оператор var
),
let { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
Меня это очень сбивает с толку, но я не могу найти никакой документации по обоим синтаксисам даже по MDN .
Ответы:
Это обе функции JavaScript 1.7. Первый - это переменные уровня блока :
Второй называется деструктуризацией :
Для тех, кто знаком с Python, он похож на этот синтаксис:
Первый фрагмент кода является сокращением для:
Вы можете переписать второй фрагмент кода как:
источник
var { Hotkey }
эквивалентноvar { Hotkey: Hotkey }
. Спасибо, что нашли документацию!var Hotkey = require(...).Hotkey
? Или это просто экономия нажатий клавиш?Вы смотрите на деструктурирующее задание. Это форма сопоставления с образцом, как в Haskell.
Используя деструктурирующее присвоение, вы можете извлекать значения из объектов и массивов и назначать их вновь объявленным переменным, используя синтаксис литерала объекта и массива. Это делает код более лаконичным.
Например:
Приведенный выше код эквивалентен:
Аналогично для массивов:
Это эквивалентно:
Вы также можете извлечь и переименовать свойство объекта следующим образом:
Это эквивалентно:
Это все, что нужно сделать.
источник
var {a, b, c} = ascii;
синтаксис.Это разрушающее задание в Javascript и является частью стандарта ES2015. Он распаковывает или извлекает значения из массивов или свойств из объектов в отдельные переменные. Например: деструктуризация массива
// с деструктуризацией var [one, two, three] = foo
Например: деструктуризация объекта
var o = {p: 42, q: true}; var {p, q} = o;
console.log (р); // 42 console.log (q); // правда
// Присваиваем новые имена переменных var {p: foo, q: bar} = o;
console.log (Foo); // 42 console.log (bar); // правда
источник
Есть документация для
let
заявления на MDN: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/letlet
аналогиченvar
тем, что ограничивает объем объявленной переменной. Он позволяет вам объявлять переменную внутриif(){}
блока (или какого-либо другого блока) и иметь эту переменную только «видимой» внутри этого блока (JavaScript до сих пор имеет область действия, а не область действия блока, как в большинстве других языков). Так чтоlet
это в основном "исправление" того, с чем у многих возникают проблемы. Обратите внимание, что tihs - это функция JavaScript 1.7.Ничего не нашел
{Foo}
.источник
{Foo}
: /{
и}
.