【问题标题】:Javascript - Why below function definition errors out?Javascript - 为什么下面的函数定义错误?
【发布时间】:2014-12-06 08:52:31
【问题描述】:
var a = [3,5,2,6,8];
var i = 0;
function x(a[i]) { //This line errors out, why?

}

请解释为什么上面的行错误?我正在尝试使用递归以相反的顺序打印数组元素。如果你也能写代码,那就太棒了!

【问题讨论】:

  • 参数声明 a[i] 是无效的语法。只需a 即可。

标签: javascript arrays function recursion


【解决方案1】:

您将值传递给函数定义。你必须在调用函数时给出它,而不是在定义时 功能。你可以在调用函数时传递一个值。

var a = [3,5,2,6,8];
var i = 0;
function x(t) { 

}
x(a[i]);

【讨论】:

    【解决方案2】:

    您正在错误地定义一个带有参数的函数。您为函数参数命名,就像任何其他变量一样:

    function x(array) {
      //Do something with your array
    }
    

    然后你调用函数:

    var a = [1,2,3,4,5];
    x(a);
    

    【讨论】:

      【解决方案3】:

      正如您在其他答案中看到的那样,您有点混合了函数声明和函数评估(调用)。

      这声明了接受a参数的函数x

      function x(a) {
      
      }
      

      这会调用带有参数a的函数x

      var a = [3,5,2,6,8];
      x(a);
      

      或直接:

      x([3,5,2,6,8]);
      

      关于反转数组的递归函数,这可能是一个选项:

      var a = [3,5,2,6,8];
      function x(a) {
          if (a.length === 0) {
              return [];
          }
          return a.slice(-1).concat(x(a.slice(0, -1)));
      }
      

      【讨论】:

        【解决方案4】:

        使用递归:

        var a = [3,5,2,6,8];
        function x(p, len) {
           if(len >= 0){
             alert(p[len-1]);        
             x(p, len-1);
           }    
        }
        // and call
        x(a, 5);
        

        DEMO

        【讨论】:

        • 不能使用反向函数...只邀请逻辑!
        • @sahilsharma 添加了递归来回答;)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-09
        • 2012-03-09
        • 1970-01-01
        • 2012-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多