メトロアプリケーション JavaScript ディレクティブ プロローグ

C#,VBなどを開発してきた人には、Windows 8/JavaScripttコードのいくつかは読みづらいのではないでしょうか。

(function(){
  "use strict";
})();

まず、"use strict";ですが、ディレクティブ プロローグと呼ばれ、暗黙的に宣言された変数を宣言することはできません。グローバルスコープで宣言するとグローバルでチェック、関数内であれば、関数内でのチェックとなります。

実際にメトロで未宣言の変数を利用すると

 0x800a13b2 - JavaScript 実行時エラー: strict モードで、変数が未定義のままです。

この宣言の定義は、ECMAScript 5準拠ということなのでが、ブラウザでの対応も気になる方は下記を確認ください。
表では,IE10は対応していないように見えます??

http://kangax.github.com/es5-compat-table/

もちろんECMAScript 5以前では、文字列として判断されます。