LoginSignup
0
0

More than 3 years have passed since last update.

[JS]'use strict';(厳格モード)で、未宣言の変数代入をエラーとして検出してくれる件

Last updated at Posted at 2019-06-17

厳格モードとは

strictは直訳すると「厳格、厳しい」の意味。
結論から言うと、これはこのJavaScriptの関数内を厳格モードとして扱う、という意味とのこと。
ここで言う厳格モードとは、より的確なエラーチェックが行われるモードのことで、これまでエラーにならなかったような、曖昧な書き方をされていたものも、きっちりエラーとしてチェックしてくれたりするものだそうです。

曖昧な書き方でも、実行できているなら良いじゃん…
なんて思われるかもですが、そういったコードは後々修正追加をしていくと、出どころ不明のエラーとなってしまったりするので、なるべくキッチリかけてるに越したことはありません。

宣言されていない変数への代入

以前書いた通り、宣言されていない変数はグローバル扱いされるが、これを厳格モードで実行すると…

非厳格モード
const a = 1;
b = 2;

console.log(a); // => 1
console.log(b); // => 2
厳格モード
'use strict';

const a = 1;
b = 2;

console.log(a);
console.log(b);
// => Uncaught ReferenceError: b is not defined at window.onload

厳格モードでは、しっかりエラーとしてキャッチしてくれている。

さらに…

出力しなくてもエラー
'use strict';

const a = 1;
b = 2;

console.log(a);
// => Uncaught ReferenceError: b is not defined at window.onload

console.logで、bを出力しなくてもエラーが出る。
つまり、代入した時点でエラーとして検知している様子。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0