【JavaScript ECMAScript】SyntaxError: 'arguments'/'eval' can't be defined or assigned to in strict mode codeエラーの使い方
SyntaxError: 'arguments'/'eval' can't be defined or assigned to in strict mode codeエラーの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
SyntaxError: 'arguments'/'eval' can't be defined or assigned to in strict mode codeオブジェクトは、JavaScriptのECMAScriptバージョンにおける厳格モードで発生する特定の構文エラーを表すオブジェクトです。
このエラーは、JavaScriptコードが「厳格モード」で実行されている場合に発生します。厳格モードとは、より安全でエラーの少ないJavaScriptコードを書くために、通常の実行モードよりも厳密なルールを適用する特別なモードのことです。
JavaScriptでは、argumentsとevalという二つの識別子が特別な意味を持っています。argumentsは、関数に渡された引数にアクセスするために使用される、配列に似た特殊なオブジェクトです。一方、eval()関数は、文字列として渡されたJavaScriptコードを実行する機能を提供します。
厳格モードでは、これらの特別な識別子を、通常の変数名、関数名、または関数の引数名として新たに定義したり、既存のargumentsやevalに新たな値を割り当てたりすることが禁止されています。この制限は、コードの意図しない動作を防ぎ、JavaScriptの予約語や特別な機能を誤って上書きすることによる混乱を避けるために設けられています。
具体的には、例えばvar arguments = 10;やfunction eval() {}、あるいはfunction myFunction(arguments) {}といったコードを厳格モードで記述しようとすると、このエラーが発生します。このエラーに遭遇した場合は、コード内でargumentsやeval以外の適切な変数名や関数名を使用することで解消できます。例えば、argsやevaluateCodeなど、意味が明確で予約語と衝突しない名前を選ぶことを推奨します。
構文(syntax)
1'use strict'; 2var arguments = 42;
引数(parameters)
引数なし
引数はありません
戻り値(return)
戻り値なし
戻り値はありません