「Strictモード」とはプログラムを厳密に(strict)チェックしてくれるモードのことで、そのチェック項目や挙動は、主に以下のような内容となっています。
・varの省略は不可となる。
・同名の仮引数名は不可となる。
・関数内でthisはグローバルオブジェクトを参照せずundefinedになる。
・argumentsオブジェクトのcalleeプロパティの利用不可。
・Functionオブジェクトのcallerプロパティの利用不可。
・call/applyメソッドでnullの指定不可。
・8進数表記の不可。
・with文の利用不可。
・eval関数内の変数は関数外で呼べない。
Strictモードにするためには下記のコードを記述します。
1 |
'use strict'; |
または
1 |
"use strict"; |
「スクリプトの先頭」に記述すると、スクリプト全体がStrictモードになります。
またある特定の「関数内の先頭」に記述すると、その関数内だけがStrictモードになります。
varの省略は不可
変数の宣言時に、varのない変数はエラーとなります。
1 2 3 |
'use strict'; title = 'こころ'; //エラー |
同名の仮引数名は不可
1 2 3 4 5 6 7 |
'use strict'; function getBook(title,title){ //同名の仮引数名 console.log(title); } getBook('こころ','三四郎'); //エラー |
Strictモードでない場合は、後に指定した引数が出力されます。
eval関数内の変数は関数外で呼べない
1 2 3 4 5 |
'use strict'; eval( ' var title="こころ"; ' ); console.log(title); //エラー |