Обозначение скобок объекта Javascript ({ Navigation } =) слева от присвоения

Я не видел этот синтаксис раньше, и мне интересно, что это такое.

var { Navigation } = require('react-router');

Скобки слева выдают синтаксическую ошибку:

неожиданный маркер {

Я не уверен, какая часть конфигурации веб-пакета преобразуется или какова цель синтаксиса. Это вещь Гармонии? Может ли кто-нибудь просветить меня?

5 ответов

Решение

Это называется назначением деструктурирования и является частью стандарта ES2015.

Синтаксис деструктурирующего присваивания является выражением JavaScript, которое позволяет извлекать данные из массивов или объектов, используя синтаксис, который отражает построение массивов и литералов объектов.

Источник: ссылка на деструктурирующее назначение в MDN

Деструктуризация объекта

 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
Другие вопросы по тегам