strict モード対策

FirefoxJavaScript にはコードを厳格に解釈する strict モードがある。
[about:config] - [javascript.options.strict = true]

この状態で、疑わしいコードを実行するとエラーコンソールに警告が出る(ロギングにつられてパフォーマンスも大きく落ちる)。
例えば、if 内での代入や、関数からの戻り値が有ったり無かったりするケースなど。

function() {
  if (a = 1) { return 1; }
  // return 
}

if 内での代入は、()で囲むことで警告を抑止できるし、

if ( (a = 1) ) {} // 警告が出なくなる

return し忘れは適切に補完することで回避できる。

function() {
  if (a) { return 1; }
  return 0;
}

警告付きのコードを公開し続けると、ちょっとまずいことになる。

YUI compressor を使うと、strict モードでは検出されない

  • 未定義変数の参照
  • 未使用変数の検出
  • 変数の再定義
  • varの乱用

などの問題を発見できる。