在JavaScript中声明和初始化变量之间有什么区别?

以下是关于ECMAScript规范中变量的声明和初始化的说明-

A var statement declares variables that are scoped to the running execution context’s VariableEnvironment. Var variables are created when their containing Lexical Environment is instantiated and are initialized to undefined when created. [...] A variable defined by a VariableDeclaration with an Initializer is assigned the value of its Initializer’s AssignmentExpression when the VariableDeclaration is executed, not when the variable is created.

上面定义了区别:

  • 所有变量均使用未定义的值初始化。

  • 变量声明在其词法环境初始化时使用undefined初始化。

  • 此初始化不能作为分配。