Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ECMAScript中的VariableStatement语义_Javascript - Fatal编程技术网

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
    标签级别从第二个
    中的
    转移到外部

    您可以在执行非本地控制传输的所有其他语句上看到有关如何使用此内部类型的更多详细信息