【问题标题】:CoffeeScript variable scopeCoffeeScript 变量范围
【发布时间】:2012-01-20 17:14:17
【问题描述】:

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

init = ->
  counter = 0

inc = ->
  counter += 1

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

【问题讨论】:

    标签: coffeescript


    【解决方案1】:

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

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

    【讨论】:

    • +1。已经提出了速记,但 jashkenas 坚信 = null 语法。
    • 我还没有看到,但我想理由是保持关键字计数低。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      当您遇到这样的问题时,请查看生成的 javascript。很明显,变量范围在词法上仅限于函数。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-29
        • 2012-04-09
        • 2019-01-10
        • 1970-01-01
        • 1970-01-01
        • 2012-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多