React-Native JavaScriptCore的好处

时间:2018-12-03 05:48:37

标签: javascript react-native v8

当然,我们所有人都知道强大的JavaScript引擎,所以为什么在React Native中使用另一个名称为JavaScriptCore的引擎。

JavaScriptCore不支持某些ES6功能,例如以下功能:

Array.prototype.flatten

JavaScriptCore对V8有什么好处?为什么Facebook开发人员不使用V8?

1 个答案:

答案 0 :(得分:3)

V8无法在iOS上运行,因为Apple不允许第三方应用程序在运行时(也称为“ JIT编译”)生成代码,而V8在很大程度上依赖该代码来提高性能(*)。由Apple生产的JavaScriptCore允许在iOS上运行(和JIT编译代码)。由于React Native的目的是跨平台开发,因此这是一个有力的论据。

也就是说,Array.prototype.flatten不是ES6功能。当前它是一个“ stage 3 proposal”,这意味着它可能很快就会成为JavaScript的正式组成部分-大概是ES2019(旧命名方案中为“ ES10”)。此外,由于Web兼容性问题,名称为Array.prototype.flat,它已重命名为.flatten。 JavaScript引擎已经开始实现它;根据{{​​3}}的说法,最新版本的Safari / JavaScriptCore已经支持了它,因此,在React Native中获得支持也可能只是时间问题。

(*)有一个MDN用于构建V8版本,该版本避免了所有运行时代码的生成,尽管可以在任何地方运行都牺牲了很多性能,但是尚不可用。