2014-12-06 45 views
0
var a = [3,5,2,6,8]; 
var i = 0; 
function x(a[i]) { //This line errors out, why? 

} 

请解释为什么上面的线路出错?我试图用递归方式以相反的顺序打印数组元素。如果你还可以写代码,那太棒了!Javascript--为什么低于函数定义错误?

+0

的参数声明,'A [1]',是无效的语法。只要'a'就行。 – Zirak 2014-12-06 08:56:08

回答

1

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

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

} 
x(a[i]); 
0

您正在用错误的参数定义函数。你给一个名称,你的函数的参数,就像任何其他变量:

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

然后调用该函数:

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

使用递归:

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

+0

没有反向函数被使用...只有被邀请的逻辑! – 2014-12-06 09:01:53

+0

@sahilsharma添加递归来回答;) – doniyor 2014-12-06 09:17:07

0

正如你可以阅读其他答案,你是混合函数声明和函数eva淡化(呼叫)。

此声明接受一个a参数的功能x

function x(a) { 

} 

这调用一个函数x与参数a

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

或直接:

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

Regardin g至递归函数以扭转的阵列,这可以是一个选项:

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))); 
} 
相关问题