Javascript 带有google maps变量范围的Coffeescript

Javascript 带有google maps变量范围的Coffeescript,javascript,google-maps,coffeescript,Javascript,Google Maps,Coffeescript,我正试图让谷歌地图与coffeescript配合使用。我的问题是coffeescript将javascript封装在函数{中,这意味着变量不构成全局范围 有没有办法让coffeescript强制变量进入全局范围 下面是我目前使用的简单代码的一个示例 initialize = -> options = lat:-34.456 lng:23.456 zoom: 10 map = new google.maps.Map document.getEle

我正试图让谷歌地图与coffeescript配合使用。我的问题是coffeescript将javascript封装在函数{中,这意味着变量不构成全局范围

有没有办法让coffeescript强制变量进入全局范围

下面是我目前使用的简单代码的一个示例

initialize = ->
  options = 
      lat:-34.456
      lng:23.456
      zoom: 10
  map = new google.maps.Map document.getElementById('map-canvas'), options
  return

google.maps.event.addDomListener(window, 'load', initialize)
一般来说,您希望避免使用全局变量

但是,如果您确实需要创建全局视图,可以通过在窗口上指定属性来实现:

这将创建一个名为foo的全局对象,它可以在没有窗口的情况下使用,因为所有全局变量实际上都是全局对象的属性,在浏览器上,全局对象是窗口对象,可以通过全局窗口进行访问。

两个选项:

您可以附加到窗口,也可以附加到全局名称空间

 window.initialize = ->
或者在浏览器中,对它的引用将是窗口,因此

@initialize = ->
或者创建自己的命名空间并附加到其中:

myApp ?= {}
myApp.intialize = ->
然后在jQuery就绪处理程序中的其他位置,如下图所示:

$->
  google.maps.event.addDomListener(window, 'load', myApp.initialize)

为什么你需要它们是全局的?一般来说,全局是要避免的。我如何在不使用全局的情况下使用带有coffeescript的google地图?很抱歉,这是一个新问题。我编辑了你的初始化函数以获得一个主体。我想你是有意的,但如果不是,你可以重新编辑它。我如何在coffeescript中使用google地图作为替代方案?
$->
  google.maps.event.addDomListener(window, 'load', myApp.initialize)