モジュールトップでの Strict Mode(ESM はデフォルト)
JavaScript には Strict Mode(厳格モード) という「安全にコードを書くためのチェック機能」があります。
通常は 'use strict'; をファイルや関数の先頭に書いて有効化しますが、ES Modules(ESM)では自動的に Strict Mode が有効になります。
初心者は「モジュールとして書けば勝手に安全モードになる」と覚えると理解しやすいです。
基本のコード例(通常スクリプト)
// 通常のスクリプトでは明示的に書く必要がある
'use strict';
x = 10; // エラー: 変数宣言なしで代入できない
JavaScriptモジュールの場合(ESM)
// ファイルを ES Module として読み込む場合(例: <script type="module">)
export function sum(a, b) {
return a + b;
}
x = 10; // エラー: ESM は自動的に strict mode
JavaScript- ESM では
'use strict';を書かなくても常に Strict Mode。 - モジュールトップ(ファイル全体)に適用される。
よく使うテンプレート集
ブラウザでの利用
<script type="module">
import { sum } from './math.js';
console.log(sum(2, 3));
</script>
JavaScripttype="module"を指定すると、そのファイルは自動的に Strict Mode。
Node.js での利用
// package.json に "type": "module" を設定すると ESM 扱い
export const greet = (name) => `Hello, ${name}`;
JavaScript例題: Strict Mode の効果を確認
// math.js (ESM)
export function add(a, b) {
return a + b;
}
// main.js (ESM)
import { add } from './math.js';
value = 100; // エラー: Strict Mode が自動で有効
console.log(add(2, 3));
JavaScript- 効果: ESM では暗黙のグローバル変数が禁止される。
実務でのコツ
- ESM を使えば自動で安全:
'use strict';を書く必要がない。 - 古いスクリプトでは明示的に書く: ES5 以前や非モジュールスクリプトでは
'use strict';を忘れずに。 - モジュールは常に Strict Mode: なので「安全な書き方」が前提になる。
ありがちなハマりポイントと対策
'use strict';を書いても無駄ではない: ESM では不要だが、書いても害はない。- 古いブラウザや環境: モジュール対応がない場合は
'use strict';を明示する必要あり。
練習問題(Strict Mode の確認)
// ESM ファイル
export function test() {
undeclared = 123; // Strict Mode なのでエラー
return undeclared;
}
test();
JavaScript直感的な指針
- 通常スクリプト →
'use strict';が必要。 - ESM → 自動で Strict Mode。
- モジュールトップに書かなくても安全モード。
- 初心者は「モジュールなら安全」と覚えると楽。
これを覚えれば「モジュールを使うだけで安全なコード」が書けるようになり、余計なバグを防げます。
