在使用React Native时,你的JavaScript代码将会运行在两个不同的环境上:
虽然两个环境非常类似,但开发者还是可能碰到一些不一致的地方。未来我们很可能会尝试一些其他的JS引擎,所以请尽量避免使用依赖于特定运行环境的代码。
语法转换器可以使编写代码的过程更加享受,因为开发者可以借助转换器直接使用新的JavaScirpt语法标准,而无需等待JS解释器的支持。
React Native从0.5.0版本开始已经内置Babel转换器。你可以查看Babel的文档来了解有关它可以转换的语法的详情。
这里可以看到目前React Native默认开启的语法转换特性。
注:若想学习相关语法,译者推荐阮一峰老师的《ECMAScript 6入门》以及论坛的讨论帖。
ES5
promise.catch(function() { });
ES6
<C onPress={() => this.setState({pressed: true})}
let greeting = 'hi';
Math.max(...array);
class C extends React.Component { render() { return <View />; } }
const answer = 42;
var {isActive, style} = this.props;
for (var num of [1, 2, 3]) {}
import React, { Component } from 'react';
var key = 'abc'; var obj = {[key]: 10};
var obj = { method() { return 10; } };
var name = 'vjeux'; var obj = { name };
function(type, ...args) { }
var who = 'world'; var str = `Hello ${who}`;
ES7
var extended = { ...obj, a: 10 };
function f(a, b, c,) { }
async function doStuffAsync() { const foo = await doOtherStuffAsync(); }
;许多标准功能也都在支持的JavaScript运行环境上做了兼容支持。
浏览器
ES6
ES7
其他特性
__DEV__