Środowisko JavaScript
Ta strona została przetłumaczona przez PageTurner AI (beta). Nie jest oficjalnie zatwierdzona przez projekt. Znalazłeś błąd? Zgłoś problem →
Runtime JavaScript
Podczas korzystania z React Native, Twój kod JavaScript może działać w aż trzech różnych środowiskach:
-
W większości przypadków React Native używa Hermesa, otwartoźródłowego silnika JavaScript zoptymalizowanego pod React Native.
-
Jeśli Hermes jest wyłączony, React Native wykorzysta JavaScriptCore, silnik napędzający Safari. Na iOS JavaScriptCore nie używa JIT z powodu braku pamięci wykonywalnej z możliwością zapisu w aplikacjach.
-
Podczas debugowania w Chrome cały kod JavaScript działa w samej przeglądarce, komunikując się z kodem natywnym przez WebSockety. Chrome używa silnika V8.
Choć te środowiska są bardzo podobne, mogą wystąpić pewne niespójności. Najlepiej unikać polegania na specyficznych cechach dowolnego runtime'u.
Transformatory składni JavaScript
Transformatory składni ułatwiają pisanie kodu, pozwalając używać nowych konstrukcji JavaScript bez oczekiwania na ich wsparcie we wszystkich interpreterach.
React Native dostarcza kompilator Babel. Szczegóły obsługiwanych transformacji znajdziesz w dokumentacji Babela.
Pełna lista transformacji włączonych w React Native dostępna jest w @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 | |
Polyfille
Wiele standardowych funkcji jest dostępnych we wszystkich obsługiwanych środowiskach JavaScript.
Przeglądarka
-
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)
Specyficzne
__DEV__