当然,我们都知道强大的JavaScript引擎,所以为什么在React Native中使用一个不同的引擎,名为JavaScriptCore。
JavaScriptCore不支持如下函数所示的一些ES6特性:
Array.prototype.flattenJavaScriptCore对V8有什么好处?为什么Facebook开发者不使用V8?
发布于 2018-12-03 19:22:52
V8不运行在iOS上,因为苹果不允许第三方应用程序在运行时生成代码。(“JIT编译”),V8在性能(*)方面非常依赖它。JavaScriptCore是由苹果制造的,允许在iOS上运行(和JIT编译代码)。由于React原住民的目的是跨平台开发,这是一个强有力的论据。
也就是说,Array.prototype.flatten不是ES6特性。它目前是一个"第三阶段提案",这意味着它可能很快就会成为JavaScript的一个官方部分--可能是ES2019 (旧命名方案中的“ES10”)之类的。此外,由于Array.prototype.flat名称的web兼容性问题,它已被重命名为.flatten。JavaScript引擎已经开始实现它了;根据MDN的说法,最新版本的Safari/JavaScriptCore已经支持它了,所以支持到来也只是时间问题。
(*)有一个正在进行的努力来构建一个V8版本,它可以避免所有运行时代码的生成,用大量的性能来换取在任何地方运行的能力,但它还没有实现。
https://stackoverflow.com/questions/53588142
复制相似问题