結論:JSは関数スコープであってブロックスコープは無いので必要
app1.js (悪い例)
var array = [1,2,3]; for(a of array){ console.log(a); } console.log(a);
$ node app1.js 1 2 3 3 #=>aがトップスコープで見えてる
app2.js(安全な例)
"use strict"; let array = [1,2,3]; for(let a of array){ console.log(a); } console.log(a);
$ node app2.js 1 2 3 app2.js:7 console.log(a); #=>aが見えないので実行時エラー ...