Обозначение скобок объекта Javascript ({ Navigation } =) слева от присвоения
Я не видел этот синтаксис раньше, и мне интересно, что это такое.
var { Navigation } = require('react-router');
Скобки слева выдают синтаксическую ошибку:
неожиданный маркер {
Я не уверен, какая часть конфигурации веб-пакета преобразуется или какова цель синтаксиса. Это вещь Гармонии? Может ли кто-нибудь просветить меня?
5 ответов
Это называется назначением деструктурирования и является частью стандарта ES2015.
Синтаксис деструктурирующего присваивания является выражением JavaScript, которое позволяет извлекать данные из массивов или объектов, используя синтаксис, который отражает построение массивов и литералов объектов.
Деструктуризация объекта
var o = {p: 42, q: true};
var {p, q} = o;
console.log(p); // 42
console.log(q); // true
// Assign new variable names
var {p: foo, q: bar} = o;
console.log(foo); // 42
console.log(bar); // true
Разрушение массива
var foo = ["one", "two", "three"];
// without destructuring
var one = foo[0];
var two = foo[1];
var three = foo[2];
// with destructuring
var [one, two, three] = foo;
Это деструктурирующее задание. Это новая функция ECMAScript 2015.
var {
AppRegistry,
StyleSheet,
Text,
View,
} = React;
Это эквивалентно:
var AppRegistry = React.AppRegistry;
var StyleSheet = React.StyleSheet;
var Text = React.Text;
var View = React.View;
var { Navigation } = require('react-router');
... использует деструктуризацию для достижения того же, что и...
var Navigation = require('react-router').Navigation;
... но гораздо более читабельным.
Это новая функция в ES6 для деструкции объектов.
Поскольку все мы знаем, что здесь происходит операция присваивания, это означает, что значение правой стороны присваивается переменной левой стороны.
var { Navigation } = require('react-router');
В этом случае require('react-router')
Метод возвращает объект с парой ключ-значение
{ Navigation: function a(){},
Example1: function b(){},
Example2: function c(){}
}
,
И если мы хотим взять один ключ в этом возвращаемом объекте, скажем Navigation
для переменной мы можем использовать разрушающий объект для этого.
Это будет возможно только в том случае, если у нас есть ключ вдохнуть.
Итак, после оператора присваивания, локальная переменная Navigation
будет содержать function a(){}
Другой пример выглядит следующим образом.
var { p, q } = { p: 1, q:2, r:3, s:4 };
console.log(p) //1;
console.log(q) //2;
вместо
const salary = personnel.salary
const sex = personnel.sex
const age = personnel.age
просто
const {salary, age, sex} = personnel