CoffeeScript变量范围

时间:2011-12-14 22:42:50

标签: coffeescript

有没有办法在“文件”范围内声明一个变量(它将被CS关闭),而不是初始化它?一个人为的例子:

init = ->
  counter = 0

inc = ->
  counter += 1

这不起作用,因为你需要声明“counter”。将“counter = 0”添加到顶部将使其工作,但“= 0”是不必要的。 (一个更现实的例子涉及在页面加载时访问DOM的东西 - 没有办法在“文件”范围内正确初始化它。)

3 个答案:

答案 0 :(得分:14)

正如您所提到的,您必须在外部范围内定义它。

counter = null
init = ->
  counter = 0
inc = ->
  counter += 1

答案 1 :(得分:4)

如果你的函数是你可以使用@counter的对象的一部分,就像这样:

obj = 
  init: ->
    @counter = 0
  inc: ->
    @counter += 1

答案 2 :(得分:0)

你可以说`var counter;`用反引号,然后直接传递给生成的javascript。

如果遇到这样的问题,请查看生成的javascript。非常清楚的是,变量范围在词法上限于函数。

查看生成的javascript通常是理解coffeescript结构行为的好方法。