0

我是一名助教,一名学生问为什么以下代码没有交换数组中的前 2 个元素,而是导致未定义。这是学生给我看的代码:

var swapFirstTwoElementsOf = function (a) {
    a = [a[1],a[0]].concat(a.slice(2, a.length));
}

为什么返回未定义?

4

1 回答 1

4

您需要返回变量。本地引用被重新分配,但原始变量 a 没有。你需要做类似的事情

var swapFirstTwoElementsOf = function (a) {
    return [a[1],a[0]].concat(a.slice(2, a.length));
}

var myArray = [0, 1, 2, 3];
myArray = swapFirstTwoELementsOf(myArray);

以前,该函数评估为未定义,因为它没有返回任何内容。

于 2012-11-15T01:01:32.177 回答