如何理解这个语法? var {…} = React;

在反应原生的例子: https : //github.com/facebook/react-native

var React = require('react-native'); var { ScrollView, TouchableHighlight, Text } = React; var TouchDemo = React.createClass({ render: function() { return ( <ScrollView> <TouchableHighlight onPress={() => console.log('pressed')}> <Text>Proper Touch Handling</Text> </TouchableHighlight> </ScrollView> ); }, }); 

这个语法是什么意思?

 var { ScrollView, TouchableHighlight, Text } = React; 

我在nodejs控制台中键入它导致语法错误。 这种特殊的JavaScript语法仅适用于React Native吗?

谢谢

这是一个ECMAScript 6function的解构 。 据我所知,它不包含在任何版本的node.js或iojs中,但是可能有一个命令行标志可以用来启用它。

本文档描述了React Native支持的JavaScript环境。

ES5

  • 保留字: promise.catch(function() { });

ES6

  • 箭头function: <C onPress={() => this.setState({pressed: true})}

  • 调用传播: Math.max(...array);

  • class: class C extends React.Component { render() { return <View />; } } class C extends React.Component { render() { return <View />; } }

  • var {isActive, style} = this.props;var {isActive, style} = this.props;

  • 迭代: for (var element of array) { }

  • 计算属性: var key = 'abc'; var obj = {[key]: 10}; var key = 'abc'; var obj = {[key]: 10};

  • 对象Consise方法: var obj = { method() { return 10; } }; var obj = { method() { return 10; } };

  • 对象简称: var name = 'vjeux'; var obj = { name }; var name = 'vjeux'; var obj = { name };

  • Rest Params: function(type, ...args) { }

  • 模板:var who ='world'; var str =`Hello $ {who};`

ES7

  • Object Spread: var extended = { ...obj, a: 10 };

  • 函数尾随逗号: function f(a, b, c,) { }