将全局变量导入CoffeeScript作用域

将全局变量导入CoffeeScript作用域,coffeescript,Coffeescript,我有以下简单的咖啡文件: 'use strict' $("#subForm").submit() 这将创建JavaScript文件: (function() { 'use strict'; $("#subForm").submit(); }).call(this); 我真正需要的是: (function($) { 'use strict'; $("#subForm").submit(); })($); 我该怎么做?我需要这样做吗 这是一个Chrome扩展。因为Coffee

我有以下简单的咖啡文件:

'use strict'

$("#subForm").submit()
这将创建JavaScript文件:

(function() {
  'use strict';
  $("#subForm").submit();
}).call(this);
我真正需要的是:

(function($) {
  'use strict';
  $("#subForm").submit();
})($);
我该怎么做?我需要这样做吗


这是一个Chrome扩展。

因为CoffeeScript被编译成IIFE(因此被屏蔽在全局范围之外),所以您只需在脚本的开头使用正则变量赋值,作为全局导入的替代:

“严格使用”
$=jQuery
$(“#子窗体”).submit()
这将编译为:

(function() {
  'use strict';
  var $;

  $ = jQuery;

  $("#subForm").submit();

}).call(this);
就我所见,将全局变量作为参数传递给一个封闭的IIFE并不能提供任何额外的好处

上述操作之所以有效,是因为
$
jQuery
是不同的标识符,但如果您希望全局导入不涉及不同的名称,则可以使用
@
引用全局对象,并以这种方式进行“导入”:

“严格使用”
$=jQuery
窗口=@
document=@document
$(“#子窗体”).submit()