如果最后一个元素在javascript中未定义,则array.length返回undefined

时间:2013-05-10 04:16:59

标签: javascript arrays

我有以下代码:

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]));

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

4 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:2)

因为“undefined”被视为数组的元素!!

答案 2 :(得分:1)

你要求它提供最后一个元素 - 最后一个元素是未定义的 - 因此你正准备回到你所要求的内容。

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

答案 3 :(得分: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