0

我有以下代码:

function lastElement(array) {
  if (array.length > 0)
    return array[array.length - 1];
  else
    return undefined;
}

alert(lastElement([ undefined,1, 2]));

它返回 2,因为它不计算未定义的元素,这很好。现在,如果我将数组中的最后一个元素与未定义的元素交换:

function lastElement(array) {
  if (array.length > 0)
    return array[array.length - 1];
  else
    return undefined;
}

alert(lastElement([ 1, 2,undefined]));

它返回未定义!为什么会这样?任何帮助表示赞赏。

4

4 回答 4

6

因为数组中的最后一个元素是undefined.

该数组有 3 个元素12其中undefinedundefined 的索引为 2,数组的长度为 3。

因此,当array[array.length - 1]返回时它是undefined

于 2013-05-10T04:18:21.050 回答
2

因为“未定义”被视为数组的元素!

于 2013-05-10T04:22:21.683 回答
1

它没有说array.lengthundefined.. 当您返回数组的最后一个元素时,它说undefined

function lastElement(array) {
  if (array.length > 0)
    return array[array.length - 1];
  else
    return undefined;
}

alert(lastElement([ 1, 2,undefined]));

这里array.length = 3array[array.length - 1] = undefined

于 2013-05-10T04:22:14.857 回答
1

您正在向它询问最后一个元素 - 最后一个元素未定义 - 因此您得到的正是您所要求的。

在第一种情况下,它没有忽略未定义的数组元素,它正在计算它,但您没有输出它的值。如果您有一个数组,其中每个值都未定义,则每个索引都将通过该函数返回未定义。

于 2013-05-10T04:19:56.757 回答