Почему webpack tapable использует new Function(‘xx’, ‘некоторый строковый код’) для генерации функции вместо непосредственного написания функции?

#javascript #webpack

#javascript #webpack

Вопрос:

Я не понимаю, в чем преимущества этого.

Я попробовал это сам и обнаружил, что новая функция на самом деле намного медленнее, чем прямое выполнение кода.

 case "sync":
fn = new Function(
                    this.args(),
                    '"use strict";n'  
                        this.header()  
                        this.content({
                            onError: err => `throw ${err};n`,
                            onResult: result => `return ${result};n`,
                            onDone: () => "",
                            rethrowIfPossible: true
                        })
                );
                break;  

Почему бы не сделать это следующим образом

 function async() {
  "use strict";
  some code......;
  onError: err => `throw ${err};n`,
                            onResult: result => `return ${result};n`,
                            onDone: () => "",
                            rethrowIfPossible: true
}  

Комментарии:

1. function async выдаст a SyntaxError , async является зарезервированным ключевым словом