ECMA-262§12.2によると、VariableStatement(つまりvar identifier=value)は明示的に何も返しません。さらに、VariableStatementはステートメントです。ステートメントは値を返しません。また、式が配置される場所にステートメントを配置することは無効です。
たとえば、次のいずれも、価値を生み出す式が必要な場所にステートメントを配置するため、意味がありません。
var a = var b;
function fn() { return var x; }
§11.13.1に従い、変数()に割り当てると、割り当てられた値がidentifier=value返されます。
を書くと、その値をvar a = 1;宣言して初期化します。これはVariableStatementであるため、何も返さず、REPLはを出力します。a1undefined
a=1に割り当てる式1ですa。がないためa、JavaScriptは通常のコードで暗黙的にグローバル を作成します(ただし、厳密モードで新しいグローバルを暗黙的に作成することは許可されていないため、厳密モードでaをスローします)。ReferenceError
以前に存在したかどうかに関係なくa、式は割り当てられた値を返す1ため、REPLはそれを出力します。