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

I_D*_*ing 0 javascript arrays

我有以下代码:

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

alert(lastElement([ undefined,1, 2]));
Run Code Online (Sandbox Code Playgroud)

返回2,因为它不计算未定义的元素,并且完全正常.现在如果我用undefined交换数组中的最后一个元素:

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

alert(lastElement([ 1, 2,undefined]));
Run Code Online (Sandbox Code Playgroud)

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

Aru*_*hny 6

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

该阵列具有3个元素1,2并且undefined其中未定义具有索引2和阵列具有3的长度.

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