JavaScript環境
JavaScript ランタイム
React Native を使用する場合、最大 3 つの環境で JavaScript コードを実行することになります。
- ほとんどの場合、React Native は React Native 向けに最適化されたオープンソースの JavaScript エンジンであるHermesを使用します。
- Hermes が無効になっている場合、React Native は Safari に搭載されている JavaScript エンジンであるJavaScriptCoreを使用します。iOS では、iOS アプリに書き込み可能な実行可能メモリがないため、JavaScriptCore は JIT を使用しないことに注意してください。
- Chrome デバッグを使用する場合、すべての JavaScript コードは Chrome 自体の中で実行され、WebSocket を介してネイティブ コードと通信します。Chrome は JavaScript エンジンとしてV8を使用しています。
これらの環境は非常に似ていますが、いくつかの不整合に遭遇する可能性があります。特定のランタイムに依存することは避けるのが最善です。
JavaScript 構文トランスフォーマー
構文トランスフォーマーを使用すると、すべてのインタプリタがサポートするのを待つことなく新しい JavaScript 構文を使用できるため、コードの記述がより楽しくなります。
React Native にはBabel JavaScript コンパイラが同梱されています。サポートされている変換の詳細については、Babel ドキュメントを確認してください。
React Native で有効になっている変換の全リストは、@react-native/babel-presetにあります。
| 変換 | コード |
|---|---|
| ECMAScript 5 | |
| 予約語 | |
| ECMAScript 2015 (ES6) | |
| アロー関数 | |
| ブロックスコープ | |
| コールスプレッド | |
| クラス | |
| 計算プロパティ | |
| 定数 | |
| 分割代入 | |
| for…of | |
| 関数名 | |
| リテラル | |
| モジュール | |
| オブジェクトの簡潔なメソッド | |
| オブジェクトの省略記法 | |
| パラメータ | |
| レストパラメータ | |
| 短縮プロパティ | |
| スティッキー正規表現 | |
| テンプレートリテラル | |
| ユニコード正規表現 | |
| ECMAScript 2016 (ES7) | |
| べき乗演算子 | |
| ECMAScript 2017 (ES8) | |
| Async 関数 | |
| 関数の末尾カンマ | |
| ECMAScript 2018 (ES9) | |
| オブジェクトスプレッド | |
| ECMAScript 2019 (ES10) | |
| オプショナルキャッチバインディング | |
| ECMAScript 2020 (ES11) | |
| ダイナミックインポート | |
| Nullish 合体演算子 | |
| オプショナルチェイニング | |
| ECMAScript 2022 (ES13) | |
| クラスフィールド | |
| ステージ 1 プロポーザル | |
| Export Default From | |
| その他 | |
| Babel テンプレート | |
| Flow | |
| ESM から CJS | |
| JSX | |
| Object Assign | |
| React Display Name | |
| TypeScript | |
ポリフィル
多くの標準関数も、サポートされているすべての JavaScript ランタイムで利用できます。
ブラウザ
- CommonJS
require console.{log, warn, error, info, debug, trace, table, group, groupCollapsed, groupEnd}XMLHttpRequest,fetch{set, clear}{Timeout, Interval, Immediate}, {request, cancel}AnimationFrame
ECMAScript 2015 (ES6)
Array.fromArray.prototype.{find, findIndex}Object.assignString.prototype.{startsWith, endsWith, repeat, includes}
ECMAScript 2016 (ES7)
Array.prototype.includes
ECMAScript 2017 (ES8)
特定
__DEV__