【问题标题】:Coffeescript - reassign upper-scope variable using a functionCoffeescript - 使用函数重新分配上层变量
【发布时间】:2016-04-11 21:24:24
【问题描述】:
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 会产生所需的结果,但我的代码风格要求我首先声明所有函数,然后分配变量。
在这种情况下可以做什么?特别是我希望咖啡脚本不要在 fun 内的 javascript 中生成 var views;

【问题讨论】:

    标签: coffeescript


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果你想让fun 知道外部views,那么你必须在fun 之前定义views

      views = 123
      fun = ->
          views = []
      

      【讨论】:

      • 这在某些情况下非常不方便 =(
      • 其他一切也是如此。也许您应该使用一个类来将您的函数和变量保持在一起,而不是尝试使用范围欺骗。
      猜你喜欢
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      相关资源
      最近更新 更多