글 은 React Native 의 공식 Документ 인 Среда JavaScript 를 학습 목적 으로 번역 한 글 입니다.
JavaScript 런타임
React Native 실행 중일 때, 가 작성한 JavaScript 코드 는 두 가지 환경 에서 실행 됩니다.
- 경우, React Native 는 Safari 브라우저 에 쓰이는 JavaScriptCore WebKit 엔진 을 사용 하여 구동 됩니다. iOS 예외 인데요, iOS 에는 쓰기 가능한 실행 가능 가 없기 JavaScriptCore 에서 JIT 를 사용 하지 않습니다.
- Chrome 을 사용할 때, 모든 JavaScript 코드 는 Chrome 자체 에서 실행 되며, WebSocket 을 거쳐 네이티브 코드 와 신호 를 주고 받게 됩니다. Chrome V8 을 JavaScript 엔진 으로 사용 합니다.
두 환경 이 매우 유사 하긴 하지만 그렇다고 완전히 같지는 않습니다. 또 다른 JavaScript 엔진 을 실험 할 가능성 이 높기 때문에, 런타임 특성 에 의존 하지 않는 것이 좋겠습니다.
Преобразователи синтаксиса JavaScript
인터프리터 들이 아직 새로운 JavaScript 문법 을 정식 으로 지원 해주지 않더라도, преобразователь синтаксиса 가 있기 때문에 우리 는 보다 코딩 할 수 있습니다!
React Native Компилятор Babel JavaScript 가 탑재 되어 있습니다. Babel 이 지원 하는 변환 가능한 문법 에 대해 자세히 알고 싶다면 Документация Babel 을 참조 하세요. Хесон Ким 님 의 글 에서 Babel 설정 방법 에 대해서도 알아볼 수 있습니다.
ES5
- 예약어 :
promise.catch(function() { });
ES6 (ECMAScript 2015)
- Стрелочные функции:
<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}`;
ES8
- Функция в конце запятой:
function f(a, b, c,) { }
- Асинхронные функции:
async function doStuffAsync() { const foo = await doOtherStuffAsync(); }
;
Этап 3
- Размах объекта:
var extended = { ...obj, a: 10 };
Конкретный
Полифиллы
되는 모든 JavaScript 런타임 에서도 많은 표준 기능 을 사용할 수 있습니다.
브라우저
- Console. {Журнал, предупреждение, ошибка, информация, трассировка, таблица}
- CommonJS требует
- XMLHttpRequest, выборка
- {Set, clear} {Timeout, Interval, Immediate}, {request, cancel} AnimationFrame
- Навигатор.геолокация
ES6
- Object.assign
- String.prototype. {StartWith, endWith, repeat, includes}
- Array.from
- Array.prototype. {Find, findIndex}
ES7
- Array.prototype. {Включает}
ES8
Конкретный
__DEV__