JavaScript函数为何在数组为空时无法返回Null?
问题分析:空数组传入时函数返回undefined而非null
- 你代码里的核心判断是和空字符串
""做比较,但空数组[]和空字符串""根本不是一回事——空数组的类型是object,空字符串是string,所以传入空数组时,array !== ""这个条件会成立,程序会进入if分支,执行return array[array.length - 1]。 - 空数组的
length是0,0 - 1得到-1,在JavaScript里,数组的[-1]索引没有对应的元素,自然会返回undefined,这就是空数组传入时返回undefined的原因。 - 额外提一句:当你不传参数调用函数时,
array的值是undefined,这时候array !== ""同样成立,进入if分支后尝试访问undefined.length会直接抛出报错,而不是返回null,这也是你没覆盖到的场景。
你的代码:
function lastElement(array) { if (array !== "") { return array[array.length - 1]; } else { return null; } }
内容的提问来源于stack exchange,提问作者Cole Hanson
相关产品推荐
相关产品推荐

