jdk.nashorn.internal.runtime.ECMAException: ReferenceError: "BigInt" is not defined js引擎最高只支持到int32吗,有人清楚吗。
本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 点击链接欢迎加入感兴趣的技术领域群。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到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特性,建议采取以下措施之一:
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)