Javascript使用闭包反转一个数字列表

时间:2015-04-18 21:42:28

标签: javascript

我正在尝试撤消数字列表,但我得到的输出为undefined

我正在使用闭包来做到这一点 这是我的代码

function reverseANumber(aList) {

    function reverse() {
        var newList = [];
        var j=0;
        for(var i = aList.length - 1; i >= 0; i--)
        {
            newList[j] = aList[i];
            j++;
        }
        return newList
    }
    reverse(aList);
}

aList=[3,2,3,1];
console.log(reverseANumber(aList));

我收到undefined作为输出 我期待1 3 2 3作为输出

我的代码出了什么问题?

4 个答案:

答案 0 :(得分:3)

简单

function reverseMe (list){
 return list.reverse();
};

reverseMe([1,3,2,3]); // returns 3,2,3,1

答案 1 :(得分:2)

不要重新发明轮子:) 使用Reverse

var aList=[3,2,3,1];
aList.reverse();
console.log(aList)

输出:

[1, 3, 2, 3]

CODEPEN DEMO

答案 2 :(得分:1)

您忘了在反向(aList)调用之前添加一个return语句:

function reverseANumber(aList) {
    function reverse() {
        var newList = [];
        var j = 0;
        for(var i = aList.length; i >= 0; i--) {
            newList[j] = aList[i];
            j++;
        }
        return newList;
    }
    return reverse(aList);
}

aList = [3,2,3,1];
console.log(reverseANumber(aList));

答案 3 :(得分:0)

您刚刚在函数内部声明了一个函数,该函数无法正常工作。 试试这个:

function reverseANumber(aList) {
    var newList = [];
    var j=0;
    for(var i = aList.length - 1; i >= 0; i--)
    {
        newList[j] = aList[i];
        j++;
    }
    return newList;
}
reverse(aList);
}
aList=[3,2,3,1];
console.log(reverseANumber(aList));