带有括号的初始化变量的Javascript变量声明

nos*_*man 3 javascript syntax

在React本机网站中,有以下代码行:

var React = require('react-native');
var { TabBarIOS, NavigatorIOS } = React;
Run Code Online (Sandbox Code Playgroud)

在示例的第二行中,TabBarIOS和NavigatorIOS变量周围括号的含义是什么?

小智 7

这称为解构赋值.这是ECMAScript 6规范中引入的新功能.

这是一个示例对象:

var test = {
  "hello": 1,
  "world": 2
}
Run Code Online (Sandbox Code Playgroud)

如果我们像这样解构它:

var {hello, world} = test;
Run Code Online (Sandbox Code Playgroud)

这相当于:

var hello = test.hello,
    world = test.world;
Run Code Online (Sandbox Code Playgroud)

但是,你可以通过解构分配来做更多有趣的事情......

让我们说我们有这个对象:

var bucket = {
  ExampleObject: function(input){
    this.input = input.trim();
    return this.input;
  },

  TestingObject: function(example){
    this.example = example || {};
    console.log(this.example.input);
  }
}
Run Code Online (Sandbox Code Playgroud)

仅仅为了记录,我已经给成员烦人的名字......所以当解构时,我们可以像这样重命名:

var {ExampleObject: Example, TestingObject: Test} = bucket;
Run Code Online (Sandbox Code Playgroud)

绑定模式遵循如下语法:

{ObjectMemberName}
// Or
{ObjectMemberName: VariableName}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看ECMAScript 6规范草案MDN文档