強火で進め

このブログではプログラム関連の記事を中心に書いてます。

JavaScriptで宣言を強制する方法

ECMAScript 5からは宣言を強制する事が可能と成りました。

以下の記述をすると宣言を強制されます。

"use strict";

例えば、 var hoge; などと事前に宣言しないで変数を使用するとエラーとなります。

"use strict";

hoge = 10;


以下の様な記述の場合、

hoge = 10;
alert(hoge);

function test() {
  "use strict";

  fuga = 10;
  alert(fuga);
}

test();

hoge はエラーになりませんが fuga はエラーとなります。あくまで影響が有るのは "use strict"; が記述されたの同じスコープ内のみです。

なお、 "use strict"; は宣言を強制する為のものではなく、あくまで厳密な処理をするモードへの切り替えの様なものです。その一環として「宣言の強制」が有る為、この様な動作となります。

その為、「宣言の強制」以外にも 010 などの8進数の記述も使えなくなります。

(例)

"use strict";

var hoge = 010+1;

詳しい情報はこちらを参照下さい。

Strict mode - MDC Docs
https://developer.mozilla.org/en/JavaScript/Strict_mode

なお、 "use strict"; の記載が有ったとしてもECMAScript 5以前の環境ではただの文字列が記述されているだけなので古い環境で動作させても、変な副作用が起こる事も有りません。

参考書籍

JavaScriptパターン ―優れたアプリケーションのための作法

JavaScriptパターン ―優れたアプリケーションのための作法

関連情報

John Resig - ECMAScript 5 Strict Mode, JSON, and More
http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/