Javascript—获取一个函数';s的名称作为字符串

Javascript—获取一个函数';s的名称作为字符串,javascript,Javascript,所以我包括了一些像这样的图书馆 var start = function() { ... } var loadScript = function() { script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://whatever.com/js?callback=start'; document.body.appen

所以我包括了一些像这样的图书馆

var start = function() { ... }

var loadScript = function() {
    script      = document.createElement('script');
    script.type = 'text/javascript';
    script.src  = 'https://whatever.com/js?callback=start';
    document.body.appendChild(script)
}

window.onload = loadScript;
如您所见,我将一个名为“start”的函数设置为库的回调函数。问题是,如果缩小文件,该函数将不再被调用
start

我试过这个,但不起作用

    script.src  = 'https://whatever.com/js?callback=' + start.name;
如何通过编程将函数名添加到
src
属性

编辑


我使用的是Rails 4,资产在Coffeescript中,因此我不认为我可以使用命名函数声明。

大多数缩微器不会折叠全局指针。因此,如果您有
window.start
(尽管不建议有太多这样的通用全局名称)

或者,为了证明这一点,
window.MyAPP.Myutil.start

要记住的另一件事是,匿名函数没有
name
属性,即使您已将其分配给变量。您需要将其添加到函数声明中

window.start = function start() {
  // stuff
}

你可以这样做,它将与任何迷你

var start = function() { ... }
var someObj = {'start': start};

然后使用
someObj['start']()
调用start函数。

由于您声明函数的方式,它们实际上从来没有名称。将函数引用赋值给变量并不会给函数命名。也就是说,迷你们应该有一种方法将符号标记为“导出”或类似的东西。你是怎么缩小的?编辑-是真;我只是不必要的迂腐:)你在哪里设置了
start.name
?你能展示一下示例库代码org和min吗?你的minifier是什么?我使用的是Rails,资产在Coffeescript中,所以我不确定我是否能编写命名函数声明如果函数必须用于JSONP回调,它必须是全局的。@Pointy是对的。在这种情况下,只需将其分配给窗口,使其成为实际的全局。我明白!我认为它是全球性的,但Coffeescript赋予了它自己的范围。谢谢