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,而我希望它返回[].
fun之前声明views会产生所需的结果,但我的代码风格要求我首先声明所有函数,然后分配变量。
在这种情况下可以做什么?特别是我希望 coffeescript 不会在 fun 内部的 javascript 中产生var views;

另一种可能性 - 虽然更复杂 - 是使用类并将函数和有趣的函数绑定到类范围。

class muchFun
    views: 123
    fun: =>
        @views = []
        return
soMuchFun = new muchFun()
console.log( soMuchFun.views )
soMuchFun.fun()
console.log( soMuchFun.views )
如果你想

fun了解外部views那么你必须在fun之前定义views

views = 123
fun = ->
    views = []

最新更新