配列をマージする処理

const a = []
const b = [{x: 1}]
const c = [...(a[0] || []), ...(b[0] || [])]
// Uncaught TypeError: undefined is not a function

これで undefined is not a function って言われる
遭遇したときはもっと複雑なコードで 関数実行してないのに 関数実行しようとしてるけど関数じゃないってエラーなので原因見つけるのに苦労しました

原因は b[0] が通常のオブジェクトなこと
配列とかイテラブルなオブジェクトじゃないとダメ

... に続くのが変数だとわかりやすくなります

const aa = a[0] || []
const bb = b[0] || []
const cc = [...aa, ...bb]
// Uncaught TypeError: bb is not iterable

式の場合は bb って名前が出せないのでエラーメッセージが違うみたい
だけど not a function じゃなくて not iterable って言ってほしい