我有以下代码:
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 !! 为什么会这样?任何帮助表示赞赏。
答案 0 :(得分:6)
因为数组中的最后一个元素是undefined
。
该数组有3个元素1
,2
和undefined
,其中undefined的索引为2,数组的长度为3。
因此,当返回array[array.length - 1]
时,它是undefined
答案 1 :(得分:2)
因为“undefined”被视为数组的元素!!
答案 2 :(得分:1)
你要求它提供最后一个元素 - 最后一个元素是未定义的 - 因此你正准备回到你所要求的内容。
在第一种情况下,它不会忽略未定义的数组元素,它正在计算它但你没有输出它的值。如果你有一个数组,其中每个值都是未定义的,那么每个索引都将通过该函数返回undefined。
答案 3 :(得分:1)
并不是说array.length
是undefined
..当您返回数组的最后一个元素时,它会显示undefined
function lastElement(array) {
if (array.length > 0)
return array[array.length - 1];
else
return undefined;
}
alert(lastElement([ 1, 2,undefined]));
此处array.length = 3
和array[array.length - 1] = undefined