renderBingo(); としてもいいのでしょうか?

定数のスコープについて理解しておきましょう。それからたくさんコードを書いてみるといいですね。
2020年12月28日
ユーザー

お世話になっております。
復習として、試行錯誤しながら分からないところは動画も見返しつつコードを書いたところ、いくつか違っている部分があったのですが、それでも実行はできました。
途中までは同じですが、function createColumns() のところから何箇所か違いがあります。

 ・
 ・(前半略)
 ・
 const columns = [];   (<-- レッスンではfunctionの中に入っている)1
function createColumns() {
for (let i = 0; i < 5; i++) {
columns[i] = createColumn(i);
}
columns[2][2] = 'FREE';
return columns;
}

function renderBingo() { (<-- レッスンでは仮引数columnsが入っている)2
for (let row = 0; row < 5; row++) {
const tr = document.createElement('tr');
for (let col = 0; col < 5; col++) {
const td = document.createElement('td');
td.textContent = columns[col][row];
tr.appendChild(td);
}
document.querySelector('tbody').appendChild(tr);
}
}
createColumns(); (<-- レッスンでは const columns = createColumns();)3
renderBingo();(<-- レッスンでは renderBingo(columns);)4
}

質問としては、
1のconst columns = []; のスコープの違いで、3のように const columns = createColumns(); としなくても大丈夫だったというところは理解できるのですが。const columns = []; はfunctionの中に入れたほうがよいのでしょうか。
また、引数、返り値の理解がいまひとつなのですが、2と4のrenderBingoの引数は必要なのでしょうか?

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?