ESLintできれいに拾えるので、スコープ内でvarの先頭出しをやるようにしようかなという気分になっている。その過程でA criticism of the Single Var Pattern in JavaScript, and a simple alternativeという記事を読んだ。デバッガーでステップ実行しづらいという話はともかく、カンマ忘れでセミコロンの自動補完が起こり、変数のグローバル化をもたらしてしまうというのは印象的だった。

var foo = 'Foooo'
  bar = 'Barrr',
  baz = 'Bazzz';

このように一行目のカンマを忘れてしまうと、意図せずbarbazがグローバル変数になってしまう。この手のエラーもリンターで拾えるとはいえ、見逃してしまった時のことを考えると、こうは書きたくなくなる。


最終行がコメントアウトしづらいというような瑣末な問題があることはなんとなく知ってはいたが、ちょっとしたミスが大きなバグへつながるということは知らなかった。varの先頭出しは単一のvar宣言で行うものかと思っていたけれど、このあたりにも色々微妙な点があるようだ。