Entorno JavaScript
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Entorno de ejecución JavaScript
Cuando usas React Native, ejecutarás tu código JavaScript en hasta tres entornos diferentes:
-
En la mayoría de los casos, React Native usa Hermes, un motor JavaScript de código abierto optimizado para React Native.
-
Si Hermes está deshabilitado, React Native usará JavaScriptCore, el motor JavaScript que impulsa Safari. Ten en cuenta que en iOS, JavaScriptCore no utiliza JIT debido a la ausencia de memoria ejecutable escribible en aplicaciones iOS.
-
Al utilizar la depuración con Chrome, todo el código JavaScript se ejecuta dentro del propio Chrome, comunicándose con el código nativo mediante WebSockets. Chrome usa V8 como motor JavaScript.
Aunque estos entornos son muy similares, podrías encontrar algunas inconsistencias. Es mejor evitar depender de características específicas de cualquier entorno de ejecución.
Transformadores de sintaxis JavaScript
Los transformadores de sintaxis hacen que escribir código sea más agradable al permitirte usar nueva sintaxis de JavaScript sin esperar a que todos los intérpretes la admitan.
React Native incluye el compilador JavaScript Babel. Consulta la documentación de Babel sobre transformaciones admitidas para más detalles.
Puedes encontrar la lista completa de transformaciones habilitadas en React Native en @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
Muchas funciones estándar están disponibles en todos los entornos de ejecución JavaScript admitidos.
Navegador
-
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)
Específico
__DEV__