JavaScript 环境
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
JavaScript 运行时
使用 React Native 时,您的 JavaScript 代码可能运行在三种环境中:
-
多数情况下,React Native 会使用专为 React Native 优化的开源引擎 Hermes。
-
若禁用 Hermes,React Native 将使用 Safari 的 JavaScript 引擎 JavaScriptCore。请注意在 iOS 上,由于应用缺少可写可执行内存,JavaScriptCore 无法使用 JIT 编译。
-
使用 Chrome 调试时,所有 JavaScript 代码都在 Chrome 内部运行,通过 WebSocket 与原生代码通信。Chrome 使用 V8 作为其 JavaScript 引擎。
尽管这些环境非常相似,但您仍可能遇到不一致的情况。建议避免依赖任何运行时的具体实现细节。
JavaScript 语法转换器
语法转换器让编码更愉悦:您可以使用新的 JavaScript 语法,而无需等待所有解释器支持。
React Native 内置了 Babel JavaScript 编译器。有关支持的转换详情,请查阅 Babel 文档。
完整的转换列表可在 @react-native/babel-preset 查看。
| Transformation | Code |
|---|---|
| ECMAScript 5 | |
| Reserved Words | |
| ECMAScript 2015 (ES6) | |
| Arrow functions | |
| Block scoping | |
| Call spread | |
| Classes | |
| Computed Properties | |
| Constants | |
| Destructuring | |
| for…of | |
| Function Name | |
| Literals | |
| Modules | |
| Object Concise Method | |
| Object Short Notation | |
| Parameters | |
| Rest Params | |
| Shorthand Properties | |
| Sticky Regex | |
| Template Literals | |
| Unicode Regex | |
| ECMAScript 2016 (ES7) | |
| Exponentiation Operator | |
| ECMAScript 2017 (ES8) | |
| Async Functions | |
| Function Trailing Comma | |
| ECMAScript 2018 (ES9) | |
| Object Spread | |
| ECMAScript 2019 (ES10) | |
| Optional Catch Binding | |
| ECMAScript 2020 (ES11) | |
| Dynamic Imports | |
| Nullish Coalescing Operator | |
| Optional Chaining | |
| ECMAScript 2022 (ES13) | |
| Class Fields | |
| Stage 1 Proposal | |
| Export Default From | |
| Miscellaneous | |
| Babel Template | |
| Flow | |
| ESM to CJS | |
| JSX | |
| Object Assign | |
| React Display Name | |
| TypeScript | |
垫片(Polyfills)
以下标准函数在所有支持的 JavaScript 运行时中均可使用:
浏览器环境
-
console.{log, warn, error, info, debug, trace, table, group, groupCollapsed, groupEnd} -
{set, clear}{Timeout, Interval, Immediate}, {request, cancel}AnimationFrame
ECMAScript 2015 (ES6)
-
String.prototype.{startsWith, endsWith, repeat, includes}
ECMAScript 2016 (ES7)
Array.prototype.includes
ECMAScript 2017 (ES8)
特殊变量
__DEV__