Я хочу написать функцию JavaScript, которая использует новый синтаксис (литерал bigint 42n
), когда браузер поддерживает его:
<script type="text/javascript">
if (window.BigInt)
FortyTwo = Function('return 42n;');
else
FortyTwo = function () {return 42;};
</script>
Но документация гласит:
Примечание. Использование конструктора функций для создания функций не рекомендуется, поскольку для него требуется тело функции в виде строки, которая может предотвратить некоторые JS оптимизации движка и может вызвать другие проблемы.
Моя функция интенсивно использует процессор, поэтому я не хочу потери производительности из-за отсутствия "некоторых JS оптимизаций движка".
Мне нужен обходной путь.
Я могу разделить скрипт на две части ( первый не удастся использовать в старых браузерах), но я сомневаюсь, что это лучший способ:
<script type="text/javascript">
FortyTwo = function () {return 42n;};
</script>
<script type="text/javascript">
if (!window.FortyTwo) FortyTwo = function () {return 42;};
</script>
Каков предпочтительный способ включения сценария, использующего новый синтаксис JS?