Warning:
This wiki has been archived and is now read-only.
ES5/语句
语法:
Statement : Block VariableStatement EmptyStatement ExpressionStatement IfStatement IterationStatement ContinueStatement BreakStatement ReturnStatement WithStatement LabelledStatement SwitchStatement ThrowStatement TryStatement DebuggerStatement
语义:
一个 Statement 可以是 LabelledStatement 的一部分,这个 LabelledStatement 自身也可以是 LabelledStatement 的一部分,以 此类推。当描述个别语句时引入标签的这种方式统称为 “当前标签组”。一个 LabelledStatement 介绍了一个标签到一个 标签组,此外没有其他语义。一个 IterationStatement 或 SwitchStatement 的标签组最初包含单个 empty 元素。任何其他语句的标签组最初是空的。
Contents
- 1 块 Error creating thumbnail: Unable to save thumbnail to destination
- 2 变量语句 Error creating thumbnail: Unable to save thumbnail to destination
- 3 空语句 Error creating thumbnail: Unable to save thumbnail to destination
- 4 表达式语句 Error creating thumbnail: Unable to save thumbnail to destination
- 5 if 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 6 迭代语句
- 6.1 do-while 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 6.2 while 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 6.3 for 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 6.4 for-in 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 7 continue 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 8 break 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 9 return 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 10 with 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 11 switch 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 12 标签语句 Error creating thumbnail: Unable to save thumbnail to destination
- 13 throw 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 14 try 语句 Error creating thumbnail: Unable to save thumbnail to destination
- 15 debugger 语句 Error creating thumbnail: Unable to save thumbnail to destination
块 Error creating thumbnail: Unable to save thumbnail to destination
语法:
Block : { StatementListopt }
StatementList : Statement StatementList Statement
语义:
产生式 Block : { } 按照下面的过程执行 :
- 返回 (normal, empty, empty)。
产生式 Block : { StatementList } 按照下面的过程执行 :
- 返回解释执行 StatementList 的结果。
产生式 StatementList : Statement 按照下面的过程执行 :
- 令 s 为解释执行 Statement 的结果。
- 如果有一个异常被抛出,返回 (throw, V, empty),这里的 V 是异常。( 仿佛没有抛出异常一样继续运行。)
- 返回 s。
产生式 StatementList : StatementList Statement 按照下面的过程执行 :
- 令 sl 为解释执行 StatementList 的结果。
- 如果 sl 是个非常规完结,返回 sl。
- 令 s 为解释执行 Statement 的结果。
- 如果有一个异常被抛出,返回 (throw, V, empty),这里的 V 是异常。 ( 仿佛没有抛出异常一样继续运行。)
- 如果 s.value 是 empty ,令 V = sl.value, 否则令 V = s.value。
- 返回 (s.type, V, s.target)。
变量语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
VariableStatement : var VariableDeclarationList ;
VariableDeclarationList : VariableDeclaration VariableDeclarationList , VariableDeclaration
VariableDeclarationListNoIn : VariableDeclarationNoIn VariableDeclarationListNoIn , VariableDeclarationNoIn
VariableDeclaration : Identifier Initialiseropt
VariableDeclarationNoIn : Identifier InitialiserNoInopt
Initialiser : = AssignmentExpression
InitialiserNoIn : = AssignmentExpressionNoIn
一个变量语句声明依 10.5 中定义创建的变量。当创建变量时初始化为 undefined。当 VariableStatement 被执行时变量关联的 Initialiser 会被分配 AssignmentExpression 的值,而不是在变量创建时。
语义:
产生式 VariableStatement : var VariableDeclarationList ; 按照下面的过程执行 :
- 解释执行 VariableDeclarationList。
- 返回 (normal, empty, empty)。
产生式 VariableDeclarationList : VariableDeclaration 按照下面的过程执行 :
- 解释执行 VariableDeclaration。
产生式 VariableDeclarationList : VariableDeclarationList , VariableDeclaration 按照下面的过程执行 :
- 解释执行 VariableDeclarationList。
- 解释执行 VariableDeclaration。
产生式 VariableDeclaration : Identifier 按照下面的过程执行 :
- 返回一个包含跟 Identifier 完全相同的字符序列的字符串值。
产生式 VariableDeclaration : Identifier Initialiser 按照下面的过程执行 :
- 令 lhs 为解释执行 Identifier 的结果,如 11.1.2 所述。
- 令 rhs 为解释执行 Initialiser 的结果。
- 令 value 为 GetValue(rhs)。
- 调用 PutValue(lhs, value)。
- 返回一个包含跟 Identifier 完全相同的字符序列的字符串值。
如果 VariableDeclaration 嵌套在 with 语句里并且 VariableDeclaration 里的标识符与 with 语句的对象式环境记录项关联的绑定对象的一个属性名相同,则第 4 步将给这个属性分配值,而不是为 Identifier 的 VariableEnvironment 绑定分配值。
产生式 Initialiser : = AssignmentExpression 按照下面的过程执行 :
- 返回解释执行 AssignmentExpression 的结果。
产生式 VariableDeclarationListNoIn, VariableDeclarationNoIn, InitialiserNoIn 解释执行的方式与产生式 VariableDeclarationList, VariableDeclaration,Initialiser 相同,除了他们包含的 VariableDeclarationListNoIn, VariableDeclarationNoIn, InitialiserNoIn, AssignmentExpressionNoIn 会分别替代 VariableDeclarationList, VariableDeclaration, Initialiser, AssignmentExpression 来解释执行。
严格模式的限制
如果一个 VariableDeclaration 或 VariableDeclarationNoIn 出现在严格模式代码里并且其 Identifier 是 "eval" 或 "arguments",那么这是个 SyntaxError。空语句 Error creating thumbnail: Unable to save thumbnail to destination
语法 :
EmptyStatement : ;
语义:
产生式 EmptyStatement : ; 按照下面的过程执行 :
- 返回 (normal, empty, empty)。
表达式语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
ExpressionStatement : [lookahead ∉ {{, function}] Expression ;
语义:
产生式 ExpressionStatement : [lookahead ∉ {{, function}] Expression ; 按照下面的过程执行 :
- 令 exprRef 为解释执行 Expression 的结果。
- 返回 (normal, GetValue(exprRef), empty)。
if 语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
IfStatement : if ( Expression ) Statement else Statement if ( Expression ) Statement
每个 else 选择与它相关联的 if 是不确定的,应与此 else 最近的并且原本没有与其对应的 else 的可能的 if 对应。
语义:
产生式 IfStatement : if ( Expression ) Statement else Statement 按照下面的过程执行 :
- 令 exprRef 为解释执行 Expression 的结果 .
- 如果 ToBoolean(GetValue(exprRef)) 为 true ,则
- 返回解释执行第一个 Statement 的结果。
- 否则,
- 返回解释执行第二个 Statement 的结果。
产生式 IfStatement : if ( Expression ) Statement 按照下面的过程执行 :
- 令 exprRef 为解释执行 Expression 的结果。
- 如果 ToBoolean(GetValue (exprRef)) 为 false 则返回 (normal, empty, empty).
- 返回解释执行 Statement 的结果。
迭代语句
语法:
IterationStatement : do Statement while ( Expression ) ; while ( Expression ) Statement for ( ExpressionNoInopt ; Expressionopt ; Expressionopt ) Statement for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement for ( LeftHandSideExpression in Expression ) Statement for ( var VariableDeclarationNoIn in Expression ) Statement
do-while 语句 Error creating thumbnail: Unable to save thumbnail to destination
产生式 do Statement while ( Expression ) ; 按照下面的过程执行 :
- 令 V = empty。
- 令 iterating 为 true。
- 只要 iterating 为 true,就重复
- 令 stmt 为解释执行 Statement 的结果。
- 如果 stmt.value 不是 empty,令 V = stmt.value。
- 如果 stmt.type 不是 continue || stmt.target 不在当前标签组,则
- 令 exprRef 为解释执行 Expression 的结果。
- 如果 ToBoolean(GetValue(exprRef)) 是 false,设定 iterating 为 false。
- 返回 (normal, V, empty)。
while 语句 Error creating thumbnail: Unable to save thumbnail to destination
产生式 IterationStatement : while ( Expression ) Statement 按照下面的过程执行 :
- 令 V = empty。
- 重复
- 令 exprRef 为解释执行 Expression 的结果。
- 如果 ToBoolean(GetValue(exprRef)) 是 false,返回 (normal, V, empty)。
- 令 stmt 为解释执行 Statement 的结果。
- 如果 stmt.value 不是 empty,令 V = stmt.value。
- 如果 stmt.type 不是 continue || stmt.target 不在当前标签组内,则
for 语句 Error creating thumbnail: Unable to save thumbnail to destination
产生式 IterationStatement : for ( ExpressionNoInopt ; Expressionopt ; Expressionopt ) Statement 按照下面的过程执行 :
- 如果 ExpressionNoIn 存在,则
- 令 exprRef 为解释执行 ExpressionNoIn 的结果。
- 调用 GetValue(exprRef)。(不会用到此值。)
- 令 V = empty。
- 重复
- 如果第一个 Expression 存在,则
- 令 testExprRef 为解释执行第一个 Expression 的结果。
- 如果 ToBoolean(GetValue(testExprRef)) 是 false,返回 (normal, V, empty)。
- 令 stmt 为解释执行 Statement 的结果。
- 如果 stmt.value 不是 empty,令 V = stmt.value。
- 如果 stmt.type 是 break 并且 stmt.target 在当前标签组内,返回 (normal, V, empty)。
- 如果 stmt.type 不是 continue || stmt.target 不在当前标签组内,则
- 如果 stmt 是个非常规完结,返回 stmt。
- 如果第二个 Expression 存在,则
- 令 incExprRef 为解释执行第二个 Expression 的结果。
- 调用 GetValue(incExprRef)。(不会用到此值。)
- 如果第一个 Expression 存在,则
产生式 IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement 按照下面的过程执行 :
- 解释执行 VariableDeclarationListNoIn。
- 令 V = empty。
- 重复
- 如果第一个 Expression 存在,则
- 令 testExprRef 为解释执行第一个 Expression 的结果 .
- 如果 ToBoolean(GetValue(testExprRef)) 是 false,则返回 (normal, V, empty)。
- 令 stmt 为解释执行 Statement 的结果。
- 如果 stmt.value 不是 empty,令 V = stmt.value。
- 如果 stmt.type 是 break 并且 stmt.target 在当前标签组内,返回 (normal, V, empty)。
- 如果 stmt.type 不是 continue || stmt.target 不在当前标签组内,则
- 如果 stmt 是个非常规完结,返回 stmt。
- 如果第二个 Expression 存在,则
- 令 incExprRef 为解释执行第二个 Expression 的结果。
- 调用 GetValue(incExprRef)。(不会用到此值。)
- 如果第一个 Expression 存在,则
for-in 语句 Error creating thumbnail: Unable to save thumbnail to destination
产生式 IterationStatement : for ( LeftHandSideExpression in Expression ) Statement 按照下面的过程执行 :
- 令 exprRef 为解释执行 Expression 的结果。
- 令 experValue 为 GetValue(exprRef)。
- 如果 experValue 是 null 或 undefined,返回 (normal, empty, empty)。
- 令 obj 为 ToObject(experValue)。
- 令 V = empty。
- 重复
- 令 P 为 obj 的下一个 [[Enumerable]] 特性为 true 的属性的名。如果不存在这样的属性,返回 (normal, V, empty)。
- 令 lhsRef 为解释执行 LeftHandSideExpression 的结果(它可能解释执行多次)。
- 调用 PutValue(lhsRef, P)。
- 令 stmt 为解释执行 Statement 的结果。
- 如果 stmt.value 不是 empty,令 V = stmt.value。
- 如果 stmt.type 是 break 并且 stmt.target 在当前标签组内,返回 (normal, V, empty)。
- 如果 stmt.type 不是 continue || stmt.target 不在当前标签组内,则
- 如果 stmt 是非常规完结,返回 stmt。
产生式 IterationStatement : for ( var VariableDeclarationNoIn in Expression ) Statement 按照下面的过程执行 :
- 令 varName 为解释执行 VariableDeclarationNoIn 的结果。
- 令 exprRef 为解释执行 Expression 的结果。
- 令 experValue 为 GetValue(exprRef)。
- 如果 experValue 是 null 或 undefined,返回 (normal, empty, empty)。
- 令 obj 为 ToObject(experValue)。
- 令 V = empty。
- 重复
- 令 P 为 obj 的下一个 [[Enumerable]] 特性为 true 的属性的名。如果不存在这样的属性,返回 (normal, V, empty)。
- 令 varRef 为解释执行 varName 的结果,仿佛它是个标示符引用(11.1.2)。它可能解释执行多次。
- 调用 PutValue(varRef, P)。
- 令 stmt 为解释执行 Statement 的结果。
- 如果 stmt.value 不是 empty,令 V = stmt.value。
- 如果 stmt.type 是 break 并且 stmt.target 在当前标签组内,返回 (normal, V, empty)。
- 如果 stmt.type 不是 continue || stmt.target 不在当前标签组内,则
- 如果 stmt 是非常规完结,返回 stmt。
continue 语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
ContinueStatement : continue ; continue [no LineTerminator here] Identifier ;
语义:
如果以下任意一个为真,那么程序被认为是语法错误的:
- 程序包含一个不带可选的 Identifier 的 continue 语句,没有直接或间接(不跨越函数边界)的嵌套在 IterationStatement 里。
- 程序包含一个有可选的 Identifier 的 continue 语句,这个 Identifier 没有出现在 IterationStatement 中闭合标签组里(不跨越函数边界)。
一个没有 Identifier 的 ContinueStatement 按照下面的过程执行 :
- 返回 (continue, empty, empty)。
一个有可选的 Identifier 的 ContinueStatement 按照下面的过程执行 :
- 返回 (continue, empty, Identifier)。
break 语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
BreakStatement : break ; break [no LineTerminator here] Identifier ;
语义:
如果以下任意一个为真,那么程序被认为是语法错误的:
- 程序包含一个不带可选的 Identifier 的 break 语句,没有直接或间接(不跨越函数边界)的嵌套在 IterationStatement 或 SwitchStatement 里。
- 程序包含一个有可选的 Identifier 的 break 语句,这个 Identifier 没有出现在 Statement 中闭合标签组里(不跨越函数边界)。
一个没有 Identifier 的 BreakStatement 按照下面的过程执行 :
- 返回 (break, empty, empty)。
一个有可选的 Identifier 的 BreakStatement 按照下面的过程执行 :
- 返回 (break, empty, Identifier)。
return 语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
ReturnStatement : return ; return [no LineTerminator here] Expression ;
语义:
在一个 ECMAScript 程序中包含的 return 语句没有在 FunctionBody 里面,那么就是语法错误的。一个 return 语句导致函数停止执行,并返回一个值给调用者。如果省略 Expression,返回值是 undefined。否则,返回值是 Expression 的值。
产生式 ReturnStatement : return [no LineTerminator here] Expressionopt ; 按照下面的过程执行 :
- 如果 Expression 不存在,返回 (return, undefined, empty)。
- 令 exprRef 为解释执行 Expression 的结果。
- 返回 (return, GetValue(exprRef), empty)。
with 语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
WithStatement : with ( Expression ) Statement
with 语句为计算对象给当前执行上下文的词法环境添加一个对象环境记录项。然后,用这个增强的词法环境执行一个语句。最后,恢复到原来的词法环境。
语义 :
产生式 WithStatement : with ( Expression ) Statement 按照下面的过程执行 :
- 令 val 为解释执行 Expression 的结果。
- 令 obj 为 ToObject(GetValue(val))。
- 令 oldEnv 为运行中的执行上下文的词法环境组件。
- 令 newEnv 为以 obj 和 oldEnv 为参数调用 NewObjectEnvironment 的结果。
- 设定 newEnv 的 provideThis 标志为 true。
- 设定运行中的执行上下文的词法环境组件为 newEnv。
- 令 C 为解释执行 Statement 的结果,但如果解释执行是由异常抛出,则令 C 为 (throw, V, empty),这里的 V 是异常。(现在继续执行,仿佛没有抛出异常。)
- 设定运行中的执行上下文的词法环境组件为 oldEnv。
- 返回 C。
严格模式的限制
严格模式代码中不能包含 WithStatement。出现 WithStatement 的上下文被当作一个 SyntaxError。switch 语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
SwitchStatement : switch ( Expression ) CaseBlock
CaseBlock : { CaseClausesopt } { CaseClausesopt DefaultClause CaseClausesopt }
CaseClauses : CaseClause CaseClauses CaseClause
CaseClause : case Expression : StatementListopt
DefaultClause : default : StatementListopt
语义:
产生式 SwitchStatement : switch ( Expression ) CaseBlock 按照下面的过程执行 :
- 令 exprRef 为解释执行 Expression 的结果。
- 令 R 为以 GetValue(exprRef) 作为参数解释执行 CaseBlock 的结果。
- 如果 R.type 是 break 并且 R.target 在当前标签组内,返回 (normal, R.value, empty)。
- 返回 R。
产生式 CaseBlock : { CaseClausesopt } 以一个给定输入参数 input, 按照下面的过程执行 :
- 令 V = empty。
- 令 A 为以源代码中顺序排列的 CaseClause 列表。
- 令 searching 为 true。
- 只要 searching 为 true,就重复
- 令 C 为 A 里的下一个 CaseClause。 如果没有 CaseClause 了,返回 (normal, V, empty)。
- 令 clauseSelector 为解释执行 C 的结果。
- 如果 input 和 clauseSelector 是 === 操作符定义的相等,则
- 设定 searching 为 false。
- 如果 C 有一个 StatementList, 则
- 令 R 为解释执行 C 的 StatementList 的结果。
- 如果 R 是个非常规完结,则返回 R。
- 令 V = R.value
- 重复
- 令 C 为 A 里的下一个 CaseClause。 如果没有 CaseClause 了,返回 (normal, V, empty)。
- 如果 C 有一个 StatementList,则
- 令 R 为解释执行 C 的 StatementList 的结果。
- 如果 R.value 不是 empty,则令 V = R.value。
- 如果 R 是个非常规完结,则返回 (R.type, V, R.target)。
产生式 CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt } 以一个给定输入 参数 input,按照下面的过程执行 :
- 令 V = empty。
- 令 A 为第一个 CaseClauses 中以源代码中顺序排列的 CaseClause 列表。
- 令 B 为第二个 CaseClauses 中以源代码中顺序排列的 CaseClause 列表。
- 令 found 为 false。
- 重复,使 C 为 A 中的依次每个 CaseClause。
- 如果 found 是 false,则
- 令 clauseSelector 为解释执行 C 的结果 .
- 如果 input 和 clauseSelector 是 === 操作符定义的相等,则设定 found 为 true。
- 如果 found 是 true,则
- 如果 C 有一个 StatementList,则
- 令 R 为解释执行 C 的 StatementList 的结果。
- 如果 R.value 不是 empty,则令 V = R.value。
- R 是个非常规完结,则返回 (R.type, V, R.target)。
- 如果 C 有一个 StatementList,则
- 如果 found 是 false,则
- 令 foundInB 为 false。
- 如果 found 是 false,则
- 只要 foundInB 为 false 并且所有 B 中的元素都没有被处理,就重复
- 令 C 为 B 里的下一个 CaseClause。
- 令 clauseSelector 为解释执行 C 的结果。
- 如果 input 和 clauseSelector 是 === 操作符定义的相等,则
- 设定 foundInB 为 true。
- 如果 C 有一个 StatementList,则
- 令 R 为解释执行 C 的 StatementList 的结果。
- 如果 R.value 不是 empty,则令 V = R.value。
- R 是个非常规完结,则返回 (R.type, V, R.target)。
- 只要 foundInB 为 false 并且所有 B 中的元素都没有被处理,就重复
- 如果 foundInB 是 false 并且 DefaultClause 有个 StatementList,则
- 令 R 为解释执行 DefaultClause 的 StatementList 的结果。
- 如果 R.value 不是 empty,则令 V = R.value。
- 如果 R 是个非常规完结,则返回 (R.type, V, R.target)。
- 重复(注 : 如果已执行步骤 7.a.i, 此循环不从 B 的开头开始。)
- 令 C 为 B 的下一个 CaseClause。如果没有 CaseClause 了,返回 (normal, V, empty)。
- 如果 C 有个 StatementList,则
- 令 R 为解释执行 C 的 StatementList 的结果。
- 如果 R.value 不是 empty,则令 V = R.value。
- 如果 R 是个非常规完结,则返回 (R.type, V, R.target)。
产生式 CaseClause : case Expression : StatementListopt 按照下面的过程执行 :
- 令 exprRef 为解释执行 Expression 的结果。
- 返回 GetValue(exprRef)。
标签语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
LabelledStatement : Identifier : Statement
语义:
一个 Statement 可以由一个标签作为前缀。标签语句仅与标签化的 break 和 continue如果一个 ECMAScript 程序包含有相同 Identifier 作为标签的 LabelledStatement 闭合的 LabelledStatement,那么认为它是是语法错误的。这不适用于直接或间接嵌套在标签语句里面的 FunctionDeclaration 的函数体里出现标签的情况。
产生式 Identifier : Statement 的解释执行方式是,先添加 Identifier 到 Statement 的标签组,再解释执行 Statement。如果 LabelledStatement 自身有一个非空标签组,这些标签还是会添加到解释执行前的 Statement 的标签组里。如果 Statement 的解释执行结果是 (break, V, L),这里的 L 等于 Identifier,则产生式的结果是 (normal, V, empty)。
在解释执行 LabelledStatement 之前,认为包含的 Statement 拥有一个空标签组,除非它是 IterationStatement 或 SwitchStatement,这种情况下认为它拥有一个包含单个元素 empty 的标签组。
throw 语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
ThrowStatement : throw [no LineTerminator here] Expression ;
语义:
产生式 ThrowStatement : throw [no LineTerminator here] Expression ; 按照下面的过程执行 :
- 令 exprRef 为解释执行 Expression 的结果。
- 返回 (throw, GetValue(exprRef), empty)。
try 语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
TryStatement : try Block Catch try Block Finally try Block Catch Finally
Catch : catch ( Identifier ) Block
Finally : finally Block
try 语句包裹一个可以出现特殊状况,如果运行时错误或 throw 语句的代码块。catch 子句提供了异常处理代码。如果 catch 子句捕获到一个异常,这个异常会绑定到它的 Identifier 上。
语义:
产生式 TryStatement : try Block Catch 按照下面的过程执行 :
产生式 TryStatement : try Block Finally 按照下面的过程执行 :产生式 TryStatement : try Block Catch Finally 按照下面的过程执行 :
- 令 B 为解释执行 Block 的结果。
- 如果 B.type 是 throw,则
- 令 C 为以参数 B 解释执行 Catch 的结果。
- 否则,B.type 不是 throw,
- 令 C 为 B。
- 令 F 为解释执行 Finally 的结果。
- 如果 F.type 是 normal,返回 C。
- 返回 F。
产生式 Catch : catch ( Identifier ) Block 按照下面的过程执行 :
- 令 C 为传给这个产生式的参数。
- 令 oldEnv 为运行中执行上下文的词法环境组件。
- 令 catchEnv 为以 oldEnv 为参数调用 NewDeclarativeEnvironment 的结果。 Error creating thumbnail: Unable to save thumbnail to destination
- 以 Identifier 字符串值为参数调用 catchEnv 的 CreateMutableBinding 具体方法。
- 以 Identifier、C、false 为参数调用 catchEnv 的 SetMutableBinding 具体方法。注:这种情况下最后一个参数无关紧要。
- 设定运行中执行上下文的词法环境组件为 catchEnv。
- 令 B 为解释执行 Block 的结果。
- 设定运行中执行上下文的词法环境组件为 oldEnv。
- 返回 B。
产生式 Finally : finally Block 按照下面的过程执行 :
- 返回解释执行 Block 的结果。
严格模式的限制 Error creating thumbnail: Unable to save thumbnail to destination
如果一个有 Catch 的 TryStatement 出现在 严格模式代码里,并且 Catch 产生式的 Identifier 是 "eval" 或 "arguments",那么这是个 SyntaxError。
debugger 语句 Error creating thumbnail: Unable to save thumbnail to destination
语法:
DebuggerStatement : debugger ;
语义:
解释执行 DebuggerStatement 产生式可允许让一个实现在调试器下运行时设置断点。如果调试器不存在或是非激活状态,这个语句没有可观测效果。
产生式 DebuggerStatement : debugger ; 按照下面的过程执行 :
- 如果一个实现定义了可用的调试工具并且是开启的,则
- 执行实现定义的调试动作。
- 令 result 为实现定义的完结值。
- 否则
- 令 result 为 (normal, empty, empty)。
- 返回 result。