Skip to content

输出是什么?

javascript
function getFruit(fruits) {
	console.log(fruits?.[1]?.[1])
}

getFruit([['🍊', '🍌'], ['🍍']])
getFruit()
getFruit([['🍍'], ['🍊', '🍌']])

A. null, undefined, 🍌 B. [], null, 🍌 C. [], [], 🍌 D. undefined, undefined, 🍌

答案: D

解析:

? 允许我们去选择性地访问对象内部更深层的嵌套属性。 我们尝试打印 fruits 数组索引值为 1 的子数组内部的索引值为 1 的元素。 如果在 fruits 数组索引值 为 1 的位置不存在元素,会直接返回 undefined。 如果 fruits 数组在索引值为 1 的位置存在元素,但是子数组在索引值为 1 的位置不存在元素,也会返回 undefined。 首先,我们尝试打印 [['🍊', '🍌'], ['🍍']] 的子数组 ['🍍'] 的第2个元素。这个子数组只包含一个元素,也就意味着在索引值为 1 的位置不存在元素,所以返回的是 undefined 。 其次,我们在没有传入任何参数调用了 getFruits 函数,也就意味着形参 fruits 的默认值为undefined。因为我们选择性地链接了 fruits 在索引值为 1 的元素,因为在索引值为 1 的位置不存在元素,因此返回的是 undefined 。 最后,我们尝试打印 ['🍍'], ['🍊', '🍌'] 的子数组 ['🍊', '🍌'] 的第2个元素。子数组索引值为 1的位置为 🍌 ,因此它被打印出了。