为什么我不能进入`return function(){}`作为动态加载脚本的一部分?

时间:2017-12-11 19:50:19

标签: javascript

我有以下内容:

return function(callback) {
  console.log(callback.toString())
  SystemJS.import('app/shared/shared.js').then(function(result){
    callbackFunction = callback;
    callback(dashboard);
    main();
  });
}

这是作为动态JS调用的一部分加载的,

  var script_func = new Function('ARGS','kbn','dateMath','_','moment','window','document','$','jQuery', 'services', result.data);
  var script_result = script_func($routeParams, kbn, dateMath, _ , moment, window, document, $, $, services);

当我进入script_func时,它会将我带到已为我的文件动态加载的VM文件 - 当我尝试在最后进入return语句时,它只是跳到最后并返回给我发起script_result = script_func()来电。

奖励积分:我不知道“动态”是否是正确的术语 - 我不确定这在JavaScript中是什么,只是看到类似的东西被称为“动态加载“。如果我把它称为错误的话,我很乐意纠正,所以我实际上可以找到一些关于此的教程:)

1 个答案:

答案 0 :(得分:2)

您可以进入script_func(...),因为有一个函数调用可以进入。您无法进入return function() { ... },因为该行没有发生任何函数调用。

类似地,您是否希望能够进入作业my_func = function() { ... }?你不能在那里踩到任何东西,因为那里没有任何电话可以进入。我正在创建一个函数对象并将其存储在my_func中。我无法进入my_func中存储的函数,直到我调用它为止。

在您的特定情况下,将创建一个函数对象并将其存储在script_result中。如果您执行了script_result(...),则可以进入该目标。