如何在新浏览器中使用扩展的JS语法



我想写一个JavaScript函数,当浏览器支持它时,它会使用新语法(bigint-literal42n(:

<script type="text/javascript">
if (window.BigInt)
FortyTwo = Function('return 42n;');
else
FortyTwo = function () {return 42;};
</script>

但文件显示:

注意:不建议使用Function构造函数来创建函数,因为它需要将函数体作为字符串,这可能会阻止一些JS引擎优化,也可能导致其他问题。

我的功能是CPU密集型的,所以我不希望由于缺乏"一些JS引擎优化"而导致性能损失
我需要一些变通办法
我可以将脚本一分为二(第一个在旧浏览器上会失败(,但我怀疑这是最好的方法:

<script type="text/javascript">
FortyTwo = function () {return 42n;};
</script>
<script type="text/javascript">
if (!window.FortyTwo) FortyTwo = function () {return 42;};
</script>

包含使用新JS语法的脚本的首选方式是什么?

您可以使用webpack、babel和跨浏览器自动转换所有代码。有一些设置开销,但你可以这样写所有的代码:

alert(42n + 22n) // 64

通过这种方法,您可以获得大多数可用的新语法,甚至还没有准备好发布的语法。


另一个选项-使用polyfill

<script src="https://cdnjs.cloudflare.com/ajax/libs/big-integer/1.6.48/BigInteger.js"></script>

然后像这个一样写你所有的代码

alert(BigInt(42) + BigInt(2)) // 44

最新更新