有没有办法在“文件”范围内声明一个变量(它将被CS关闭),而不是初始化它?一个人为的例子:
init = ->
counter = 0
inc = ->
counter += 1
这不起作用,因为你需要声明“counter”。将“counter = 0”添加到顶部将使其工作,但“= 0”是不必要的。 (一个更现实的例子涉及在页面加载时访问DOM的东西 - 没有办法在“文件”范围内正确初始化它。)
答案 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结构行为的好方法。