【问题标题】: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?
}
请解释为什么上面的行错误?我正在尝试使用递归以相反的顺序打印数组元素。如果你也能写代码,那就太棒了!
【问题讨论】:
标签:
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