开发者社区 问答 正文

jdk.nashorn.internal.runtime.ECMAException: Refere

jdk.nashorn.internal.runtime.ECMAException: ReferenceError: "BigInt" is not defined js引擎最高只支持到int32吗,有人清楚吗。

本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 点击链接欢迎加入感兴趣的技术领域群。

展开
收起
游客pklijor6gytpx 2019-10-30 16:12:44 1426 分享 版权
阿里云 AI 助理回答

遇到jdk.nashorn.internal.runtime.ECMAException: ReferenceError: "BigInt" is not defined这个错误,意味着您在使用Nashorn JavaScript引擎时尝试引用了BigInt类型,但Nashorn并不支持BigInt。Nashorn是Java 8中引入的JavaScript引擎,它对ECMAScript的支持最高到ES6(ECMAScript 2015)的大部分特性,但不包括后来引入的BigInt等新特性。

实际上,Nashorn在Java 11之后已被弃用,并在Java 15中完全移除。BigInt是ES2020引入的一个新数据类型,用于处理任意大小的整数,超出了传统的Number类型(即int32或double)的限制。

因此,如果您需要在Java环境中使用BigInt或其他较新的JavaScript特性,建议采取以下措施之一:

  1. 升级到更现代的JavaScript引擎:考虑使用如GraalVM的JavaScript引擎,它提供了对最新JavaScript标准更好的支持。
  2. 迁移至其他技术栈:如果项目允许,可以考虑将代码迁移到支持BigInt的环境或语言中。
  3. 避免使用BigInt:如果BigInt不是必须的,可以寻找替代方案,比如使用Java的BigInteger类进行大整数运算,然后通过适配器模式与JavaScript代码交互。

综上所述,问题中的“js引擎最高只支持到int32”这一说法并不准确,因为现代JavaScript引擎已经支持了BigInt来处理超过32位整数的场景,只是Nashorn引擎因其已废弃和移除,未包含这部分更新的特性支持。

参考资料: - Nashorn JavaScript Engine Deprecation in JDK 11 and Removal in a Future Release. (Oracle Corporation) - BigInt: The BigInt Type - ECMAScript Latest Draft (ECMA International)

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: