JavaScript Орчин
JavaScript ажиллах хугацаа
React Native ашиглахдаа та JavaScript кодоо хоёр орчинд ажиллуулна:
Ихэнх тохиолдолд React Native нь JavaScriptCore-ыг ашиглана. Safari-ыг дэмждэг JavaScript хөдөлгүүр юм. iOS дээр бичиж болох санах ой байхгүй үед iOS дээр JavaScriptCore нь JIT ашигладаггүй.
Chrome дибаг ашиглаж байгаа үед бүх JavaScript код нь Chrome дотроо ажиллах WebSockets-оор дамжуулан натив кодтойгоо харьцдаг. Chrome нь V8-ыг өөрийн JavaScript хөдөлгүүр болгон ашигладаг.
Хоёр орчин нь хоорондоо их төстэй ч зарим үл нийцсэн, харшлах зүйлс гардаг. Бид цаашдаа JavaScript-ын өөр хөдөлгүүр туршиж үзэж магадгүй байгаа. Тийм болохоор ажиллуулах хугацаанд хэт найдан, хамааралтай болох хэрэггүй.
JavaScript синтакс шилжүүлэгч
Бүр процесийг танихыг хүлээлгүй шинээр Javascript синтакс ашиглах боломжийг танд олгодог болохоор синтакс шилжүүлэгч нь код бичих ажлыг тааламжтай болгодог.
React Native нь Babel JavaScript compiler-ыг ашигладаг. Ямар шилжүүлэгчийг дэмждэг тухай Babel documentation-аас уншаарай.
React Native дээр ажиллах шилжүүлэгчийн тухай мэдээллийг metro-react-native-babel-preset гэснээс хараарай.
ES5
- Reserved Words:
promise.catch(function() { });
ES6
- Arrow functions:
<C onPress={() => this.setState({pressed: true})} />
- Block scoping:
let greeting = 'hi';
- Call spread:
Math.max(...array);
- Classes:
class C extends React.Component { render() { return <View />; } }
- Constants:
const answer = 42;
- Destructuring:
var {isActive, style} = this.props;
- for...of:
for (var num of [1, 2, 3]) {};
- Modules:
import React, { Component } from 'react';
- Computed Properties:
var key = 'abc'; var obj = {[key]: 10};
- Object Concise Method:
var obj = { method() { return 10; } };
- Object Short Notation:
var name = 'vjeux'; var obj = { name };
- Rest Params:
function(type, ...args) {};
- Template Literals:
var who = 'world'; var str = `Hello ${who}`;
ES8
- Function Trailing Comma:
function f(a, b, c,) {};
- Async Functions:
async function doStuffAsync() { const foo = await doOtherStuffAsync(); };
Үе 3
- Object Spread:
var extended = { ...obj, a: 10 };
Үе 1
- Optional Chaining:
var name = obj.user?.name;
Тодорхой
Polyfills
Javascript ажиллах хугацааг дэмждэг олон стандарт функцууд байдаг.
Хөтөч
- console.{log, warn, error, info, trace, table, group, groupEnd}
- CommonJS require
- XMLHttpRequest, fetch
- {set, clear}{Timeout, Interval, Immediate}, {request, cancel}AnimationFrame
- navigator.geolocation
ES6
- Object.assign
- String.prototype.{startsWith, endsWith, repeat, includes}
- Array.from
- Array.prototype.{find, findIndex}
ES7
- Array.prototype.{includes}
ES8
Specific
__DEV__