当然,我们所有人都知道强大的JavaScript引擎,所以为什么React Native使用不同的引擎来命名JavaScriptCore.
JavaScriptCore不支持ES6以下功能:
Array.prototype.flatten
Run Code Online (Sandbox Code Playgroud)
JavaScriptCore对V8有什么好处?为什么Facebook开发者不使用V8?
V8 不能在 iOS 上运行,因为 Apple 不允许第三方应用程序在运行时生成代码(也称为“JIT 编译”),而 V8 严重依赖其性能 (*)。由 Apple 开发的 JavaScriptCore 被允许在 iOS 上运行(和 JIT 编译代码)。由于 React Native 的目的是跨平台开发,这是一个强有力的论据。
也就是说,Array.prototype.flatten不是 ES6 特性。它目前是“第 3 阶段提案”,这意味着它可能很快就会成为 JavaScript 的正式部分——也许是 ES2019(旧命名方案中的“ES10”)左右。此外,Array.prototype.flat由于名称的 Web 兼容性问题,它已重命名为.flatten。JavaScript 引擎已经开始实现它;根据MDN,最新版本的 Safari/JavaScriptCore 已经支持它,所以 React Native 也支持它可能只是时间问题。
(*)一直在努力构建一个 V8 版本,该版本避免所有运行时代码生成,牺牲大量性能以换取在任何地方运行的能力,但目前尚不可用。
| 归档时间: |
|
| 查看次数: |
463 次 |
| 最近记录: |