Это потому, что первый параметр - это вызов функции , тогда как второй - только функция .
Чтобы второй вызов работал как первый, вы должны сделать:
document.write( (() => {return "<p>arrow-function</p>"})() );
Этот синтаксис выше довольно запутанный: вам нужно использовать extra () для вызова функции. Кроме того, вам необходимо заключить все определения функций стрелок в скобки из-за требований синтаксиса языка.
Этот способ немедленного вызова функций из самого определения был действительно популярен до ES2015 и известен как IIFE . Обычно вы видите это с помощью операторов function
, но вы также можете немедленно вызывать функции стрелок.
С другой стороны, чтобы первая строка вашего фрагмента работала как исходная секунда, вы должны вместо этого:
document.write(output);
Итак, теперь вы передаете только две функции определения в document.write
.