有没有办法在"file“作用域(它将被CS封闭)声明一个变量,而不初始化它?一个人为的例子:
init = ->
counter = 0
inc = ->
counter += 1这是行不通的,因为你需要声明“计数器”。将"counter = 0“添加到顶部将使其工作,但"= 0”是不必要的。(一个更实际的例子是在页面加载时访问DOM --没有办法在"file“作用域中正确地初始化它。)
发布于 2011-12-15 07:05:27
正如您所提到的,您必须在外部作用域上定义它。
counter = null
init = ->
counter = 0
inc = ->
counter += 1发布于 2011-12-15 07:13:41
如果你的函数是对象的一部分,你可以使用@counter,如下所示:
obj =
init: ->
@counter = 0
inc: ->
@counter += 1发布于 2011-12-17 09:15:20
您可以使用带反引号的var counter;,它会直接传递给生成的javascript。
当你遇到这样的问题时,看看生成的javascript。很明显,变量作用域在词法上仅限于函数。
查看生成的javascript通常是理解coffeescript构造的行为的好方法。
https://stackoverflow.com/questions/8512794
复制相似问题