Coffeescript - 使用函数重新分配高范围变量

时间:2016-04-09 14:46:31

标签: coffeescript

fun=->
    views = []
views = 123
fun()
console.log views

编译为

  var fun, views;
  fun = function() {
    var views;
    return views = [];
  };
  views = 123;
  fun();
  console.log(views);

并记录123,而我希望它返回[]views之前声明fun 会产生所需的结果,但我的代码样式要求我首先声明所有函数然后分配变量。
在这种情况下可以做些什么?特别是我希望coffeescript不在var views;内的javascript中生成fun

2 个答案:

答案 0 :(得分:1)

另一种可能性 - 虽然更复杂一点 - 就是使用一个类并将函数和fun函数绑定到类范围。

class muchFun
    views: 123
    fun: =>
        @views = []
        return

soMuchFun = new muchFun()
console.log( soMuchFun.views )
soMuchFun.fun()
console.log( soMuchFun.views )

答案 1 :(得分:0)

如果您希望fun了解外部views,则必须在views之前定义fun

views = 123
fun = ->
    views = []