【问题标题】:flex/actionscript questionflex/actionscript 问题
【发布时间】:2011-06-10 02:12:16
【问题描述】:
var n:Number = 0;
[1,2,3].forEach(function (x):void {
    n+=x;
});

如何在Flash中做到这一点? Flash 抛出错误“使用 3 个参数调用的函数......” 我这里只需要一个参数!

【问题讨论】:

    标签: flash apache-flex actionscript


    【解决方案1】:

    Array.forEach() 等待一个函数作为第一个参数,如下所示:

        function callbackFunc ( item:*, index:int, array:Array ) : void
    

    您必须在函数中声明所有三个参数。所以你的东西应该是这样的:

        var n   : Number = 0;
        var arr : Array  = [1,2,3];
    
        arr.forEach(function (item:*, index:int, array:Array):void {
            n+=index;
            trace( "n: " + n )
        });
    

    您不能在 actionscript 中使用 [1,2,3].forEach 形式,因为编译器会将其视为错误的元数据并引发错误。

    【讨论】:

    • 声明太大了,不能使用 Array.prototype.forEach 这样酷的东西 ^(
    • 这是在 ActionScript 中正确使用 Array.forEach 的方式。
    【解决方案2】:

    我假设您的 [1,2,3] 是一个数组。在这种情况下这样做。

    var d:Array = [1,2,3,4,5];
    var v:int;
    var n:Number =0;
    
    for each(v in d )
    {
        n+=v;
        trace(n);   
    }
    

    这个输出:1 3 6 10 15

    祝你好运! :)

    【讨论】:

      【解决方案3】:

      这是你的意思吗?

      var n:Number = 0;
      var ar:Array = [1,2,3];
      
      for each(var i:Number in ar)
      {
          n += i;
      }
      
      trace(n);
      

      【讨论】:

      • 是的,但我想要使用 forEach 方法的解决方案,因为它也存在于 javascript 中。
      • 我很困惑;这确实使用了 for each 方法。
      • Array.prototype.forEach,而不是“for each”循环
      猜你喜欢
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 2011-08-12
      • 2011-06-07
      相关资源
      最近更新 更多