JavaScriptCore上的ES6和React Native

JavaScriptCore上的ES6和React Native,javascript,android,ios,ecmascript-6,react-native,Javascript,Android,Ios,Ecmascript 6,React Native,我试图弄清楚React Native支持ES6的哪些部分。我知道上面列出的Babel转换,但我很难弄清楚JavaScriptCore在没有任何转换的情况下自己支持什么。JavaScriptCore会在不同的平台和设备上支持不同的东西吗?iOS 8和iOS 9上有什么不同吗 例如,我编写了一些使用生成器函数和ES6集合类型的代码,这些并不是Babel转换中列出的部分,在我测试的设备上,它在React Native中运行良好。但是,我如何知道它是否适用于我瞄准的所有设备呢?正如您提到的,React

我试图弄清楚React Native支持ES6的哪些部分。我知道上面列出的Babel转换,但我很难弄清楚JavaScriptCore在没有任何转换的情况下自己支持什么。JavaScriptCore会在不同的平台和设备上支持不同的东西吗?iOS 8和iOS 9上有什么不同吗


例如,我编写了一些使用生成器函数和ES6集合类型的代码,这些并不是Babel转换中列出的部分,在我测试的设备上,它在React Native中运行良好。但是,我如何知道它是否适用于我瞄准的所有设备呢?

正如您提到的,React Native使用JavaScriptCore作为Javascript引擎。JavaScriptCore也是iOS的Safari使用的引擎。对于Andriod,通常使用V8。因此,您只需在

中查找当前的功能支持,JavaScriptCore版本确实取决于您的iOS版本,因此,例如在iOS 8上,您无法访问某些ES6方法,如下所述:

他们甚至发布了以下帖子,只需安装即可:

npm install --save react-native-polyfill
并在应用程序开始时加载:

import'react native polyfill'
我之所以来到这里,是因为使用我的React本机应用程序的人在设备上引发了一个错误:

TypeError:undefined不是函数(计算'Number.isInteger(u)')

他们拥有iOS 8.1.2。 他们的用户代理是Mozilla/5.0(iPhone;CPU iPhone OS 8_1_2,如Mac OS X)AppleWebKit/600.1.4(KHTML,如Gecko)Mobile/12B440

但是,在iOS 10.3.1(使用iPhone或模拟器)上,这种方法是存在的,并且运行良好。我的用户代理是Mozilla/5.0(iPhone;CPU iPhone OS 10_3_1,类似Mac OS X)AppleWebKit/603.1.30(KHTML,类似Gecko)Mobile/14E8301

此外,据报道,这一功能出现在Safari Mobile 9中