Javascript ECMAScript中的VariableStatement语义
生产变量声明:Javascript ECMAScript中的VariableStatement语义,javascript,Javascript,生产变量声明: var VariableDeclarationList ; 评估结果如下: 评估VariableDeclarationList 返回(正常、空、空) 我想知道normal和empty的含义。ECMAScript描述了一个内部类型来解释语句的行为,它被称为 完成类型的值是(类型、值、目标)形式的三元组,其中: 类型可以是正常,中断,继续,返回,或抛出 值可以是任何语言值或空 target可以是任何标识符或empty 在VariableStatement的情况下,返回的完成没
var VariableDeclarationList ;
评估结果如下:
VariableDeclarationList
(正常、空、空)
我想知道normal和empty的含义。ECMAScript描述了一个内部类型来解释语句的行为,它被称为 完成类型的值是
(类型、值、目标)
形式的三元组,其中:
可以是类型
,正常
,中断
,继续
,或返回
抛出
可以是任何语言值或值
空
可以是任何target
或标识符
empty
VariableStatement
的情况下,返回的完成没有可观察的效果,这是一个正常的完成,因为控制流没有修改
返回正常完成的其他语句,例如空、the、the、the(未连接调试器时)等
A(不是语句,而是A)还返回(正常、空、空)
完成,这就是为什么例如:
eval("function f(){}"); // returns undefined
function foo() {
return 5;
}
foo();
执行代码后,检查完成结果,如果类型为normal
,值为empty
,则显式生成未定义的
(参见的步骤7),而:
eval("(function f(){})"); // returns a function object
括号中的a是a的一部分,该语句返回completion(normal,GetValue(exprRef),empty)
,其中expRef
将是FunctionExpression
的值
如果完成类型
而不是正常
也被称为“突然完成”
例如:
eval("function f(){}"); // returns undefined
function foo() {
return 5;
}
foo();
foo
中的return
语句将生成一个类似于(return,4,empty)
的补全
三元组中的目标
值仅由中断
和继续
使用,以引用a的标识符,例如:
上述break
语句的完成结果将是(break,empty,foo)
,因为控制流在foo
标签级别从第二个中的转移到外部
您可以在执行非本地控制传输的所有其他语句上看到有关如何使用此内部类型的更多详细信息