当我们运行这段代码时,控制台中会记录什么值?
const arr = [9, 8, 7, 6];
const res = arr[1, 2];
console.log(res);
当我们运行这段代码时,res
的值将是 7
。并且控制台中会打印出 7
。
让我们来详细分析一下。
[1, 2]
会被转换成 [2]
。为什么?
后续的元素 [1, 2] 不能作为数组进行操作;因此,它作为数组下标进行操作。在下标操作的上下文中,内容不构成操作数的分隔列表,而是一个单一的表达式。
在javascript中,我们可以用逗号(,)分隔多个表达式。最后一个表达式的结果会被返回。
// 示例 1
const z = (1, 2, 3, 4, 5);
console.log(z); // 输出 5
// 示例 2
function a() {
return 'a';
}
function b() {
return 'b';
}
function c() {
return 'c';
}
const d = (a(), b(), c());
console.log(d); // 输出 'c'
第二步:在上述代码变成 [9, 8, 7, 6][2]
后很简单,我们正在尝试访问索引 2 的元素,它是 7。
这里是更多的变体:
[9, 8, 7, 6][1, 2, 3] // 输出 6
[9, 8, 7, 6][8, 2, 3, 1] // 输出 8
所以在本例中,[1,2]
被解释为表达式 2
,最终我们获取了数组中索引为 2 的元素,也就是 7。