Open2

console.log([0, 1, 2][0, 1, 2]) の出力結果は?

Yuta IkeYuta Ike

正解は... 「2」でした!!いかがでしたか?

Yuta IkeYuta Ike

解説

1つ目の [0, 1, 2] は配列リテラルです。単純に、長さ3の配列を作成しています。

2つ目の [...] はインデックスへのアクセス(ブラケット記法)として扱われます。

例えば、 ["a", "b", "c"][0] であれば、配列の0番目にアクセスするので出力は"a"となります。

次に、インデックスを指定する部分が 0, 1, 2 という見慣れない形式になっている点について考えてみます。

実はこのカンマは、カンマ演算子 にあたります。実はJSではカンマが演算子として定義されており、その挙動は、「単に最後の値を返す」というものになります。

const x = (1,2,3)
console.log(x) // 3

const y = ("a", "b", "c", "d", "e")
console.log(y) // "e"

つまり、最後の項目以外は全て無視されるということですね!

これを踏まえると、冒頭の問題は以下のよう変換できます。

// 元の問題
[0, 1, 2][0, 1, 2]

// カンマ演算子を外すとこうなる
[0, 1, 2][2]

ということで、正解は 2 でした!