譛ャ鬆√�逶ョ谺。 逶ョ谺。

12 譁� (Statements)

Syntax
Statement :
Block
VariableStatement
EmptyStatement
ExpressionStatement
IfStatement
IterationStatement
ContinueStatement
BreakStatement
ReturnStatement
WithStatement
LabelledStatement
SwitchStatement
ThrowStatement
TryStatement
Semantics

Statement 縺ッ LabelledStatement 縺ョ荳€驛ィ縺ィ縺ェ繧翫≧繧九@縲√◎繧瑚�霄ォ縺� LabelledStatement 縺ョ荳€驛ィ縺ァ縺ゅ▲縺ヲ繧ゅh縺上€∽サ・荳句酔讒倥〒縺ゅk縲ゅ%縺ョ譁ケ豕輔〒縺、縺代i繧後◆繝ゥ繝吶Ν縺ッ縲∝€九€��譁��諢丞袖隲冶ィ倩ソー縺ォ縺翫>縺ヲ "迴セ蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ (current label set)" 縺ィ縺励※菴オ縺帙※蜿ら�縺輔l繧九€� LabelledStatement 縺ッ繝ゥ繝吶Ν繧サ繝�ヨ縺ク縺ョ繝ゥ繝吶Ν縺ョ蟆主�莉・螟悶�諢丞袖隲悶r謖√◆縺ェ縺�€� IterationStatement 縺セ縺溘� SwitchStatement 縺ョ繝ゥ繝吶Ν繧サ繝�ヨ縺ッ譛€蛻昴�蜊倅ク€縺ョ隕∫エ� empty 縺ァ讒区�縺輔l繧九€ゆササ諢上�莉悶�譁��繝ゥ繝吶Ν繧サ繝�ヨ縺ッ蛻晄悄縺ッ empty 縺ァ縺ゅk縲�

12.1 繝悶Ο繝�け (Block)

Syntax
Block :
{ StatementListopt }
StatementList :
Statement
StatementList Statement
Semantics

逕滓�隕丞援 Block : { } 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. (normal, empty, empty) 繧定ソ斐☆縲�

逕滓�隕丞援 Block : { StatementList } 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. StatementList 繧定ゥ穂セ。縲�
  2. Result(1) 繧定ソ斐☆縲�

逕滓�隕丞援 StatementList : Statement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Statement 繧定ゥ穂セ。縲�
  2. 萓句、悶′謚輔£繧峨l縺溘i縲�(throw, V, empty) 繧定ソ斐☆縲� V 縺ッ萓句、悶〒縺ゅk縲� (縺薙%縺ァ縺ッ萓句、悶′霑斐&繧後↑縺�°縺ョ繧医≧縺ォ螳溯。後�騾イ陦後☆繧九€�)
  3. Result(1) 繧定ソ斐☆縲�

逕滓�隕丞援 StatementList : StatementList Statement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. StatementList 繧定ゥ穂セ。縲�
  2. Result(1) 縺御クュ騾泌ョ御コ�〒縺ゅl縺ー縲� Result(1) 繧定ソ斐☆縲�
  3. Statement 繧定ゥ穂セ。縲�
  4. 萓句、悶′謚輔£繧峨l縺溘i縲�(throw, V, empty) 繧定ソ斐☆縲� V 縺ッ萓句、悶〒縺ゅk縲� (縺薙%縺ァ縺ッ萓句、悶′霑斐&繧後↑縺�°縺ョ繧医≧縺ォ螳溯。後�騾イ陦後☆繧九€�)
  5. Result(3).value 縺� empty 縺ァ縺ゅl縺ー縲� V = Result(1).value 縺ィ縺励€√◎縺�〒縺ェ縺代l縺ー V = Result(3).value 縺ィ縺吶k縲�
  6. (Result(3).type, V, Result(3).target) 繧定ソ斐☆縲�

12.2 螟画焚譁� (Variable statement)

Syntax
VariableStatement :
var VariableDeclarationList ;
VariableDeclarationList :
VariableDeclaration
VariableDeclarationList , VariableDeclaration
VariableDeclarationListNoIn :
VariableDeclarationNoIn
VariableDeclarationListNoIn , VariableDeclarationNoIn
VariableDeclaration :
Identifier Initialiseropt
VariableDeclarationNoIn :
Identifier InitialiserNoInopt
Initialiser :
= AssignmentExpression
InitialiserNoIn :
= AssignmentExpressionNoIn
Description

FunctionDeclaration 蜀�Κ縺ァ螟画焚譁�′逋コ逕溘☆繧九↑繧峨�縲√◎縺ョ螟画焚縺ッ縲�繧サ繧ッ繧キ繝ァ繝ウ 10.1.3 縺ォ縺ゅk繧医≧縺ォ縲√◎縺ョ髢「謨ー蜀��髢「謨ー繝ュ繝シ繧ォ繝ォ繧ケ繧ウ繝シ繝励〒螳夂セゥ縺輔l繧九€ゅ◎縺�〒縺ェ縺�↑繧峨�縲√◎繧後i縺ッ繝励Ο繝代ユ繧」螻樊€ァ { DontDelete } 縺ョ繧ー繝ュ繝シ繝舌Ν繧ケ繧ウ繝シ繝励〒螳夂セゥ縺輔l繧�(縺、縺セ繧翫€√そ繧ッ繧キ繝ァ繝ウ10.1.3 縺ォ縺ゅk繧ー繝ュ繝シ繝舌Ν繧ェ繝悶ず繧ァ繧ッ繝医�繝。繝ウ繝舌→縺励※菴懈�縺輔l繧�)縲ょ、画焚縺ッ螳溯。後せ繧ウ繝シ繝励↓蜈・縺」縺溘→縺阪↓逕滓�縺輔l繧九€� Block 縺ッ譁ー縺励>螳溯。後せ繧ウ繝シ繝励r螳夂セゥ縺励↑縺�€� Program 縺ィ FunctionDeclaration 縺�縺代′譁ー縺励>繧ケ繧ウ繝シ繝励r逕滓�縺吶k縲ら函謌先凾縲∝、画焚縺ッ undefined 縺ァ蛻晄悄蛹悶&繧後k縲ゅう繝九す繝」繝ゥ繧、繧カ繧呈戟縺、螟画焚縺� AssignmentExpression 縺ョ蛟、繧剃サ」蜈・縺輔l繧九�縺ッ VariableStatement 縺悟ョ溯。後&繧後k縺ィ縺阪〒縺ゅj縲∝、画焚縺檎函謌舌&繧後◆縺ィ縺阪〒縺ッ縺ェ縺�€�

Semantics

逕滓�隕丞援 VariableStatement : var VariableDeclarationList ; 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. VariableDeclarationList 繧定ゥ穂セ。縲�
  2. (normal, empty, empty) 繧定ソ斐☆縲�

逕滓�隕丞援 VariableDeclarationList : VariableDeclaration 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. VariableDeclaration 繧定ゥ穂セ。縲�

逕滓�隕丞援 VariableDeclarationList : VariableDeclarationList , VariableDeclaration 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. VariableDeclarationList 繧定ゥ穂セ。縲�
  2. VariableDeclaration 繧定ゥ穂セ。縲�

逕滓�隕丞援 VariableDeclaration : Identifier 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Identifier 縺ィ蜷後§譁�ュ励す繝シ繧ア繝ウ繧ケ縺ァ讒区�縺輔l繧区枚蟄怜�蛟、繧定ソ斐☆縲�

逕滓�隕丞援 VariableDeclaration : Identifier Initialiser 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. 繧サ繧ッ繧キ繝ァ繝ウ 11.1.2 縺ォ縺ゅk繧医≧縺ォ Identifier 繧定ゥ穂セ。縲�
  2. Initialiser 繧定ゥ穂セ。縲�
  3. GetValue(Result(2)) 繧貞他蜃コ縺吶€�
  4. PutValue(Result(1), Result(3)) 繧貞他蜃コ縺吶€�
  5. Identifier 縺ィ蜷後§譁�ュ励す繝シ繧ア繝ウ繧ケ縺ァ讒区�縺輔l繧区枚蟄怜�蛟、繧定ソ斐☆縲�

逕滓�隕丞援 Initialiser : = AssignmentExpression 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. AssignmentExpression 繧定ゥ穂セ。縲�
  2. Result(1) 繧定ソ斐☆縲�

逕滓�隕丞援 VariableDeclarationListNoIn, VariableDeclarationNoIn, InitialiserNoIn 縺ッ縲∫函謌占ヲ丞援 VariableDeclarationList, VariableDeclaration, Initialiser 縺ィ蜷梧ァ倥↓隧穂セ。縺輔l繧九′縲� VariableDeclarationList, VariableDeclaration, Initialiser, AssignmentExpression 縺ョ莉」繧上j縺ォ縲√◎繧後◇繧� VariableDeclarationListNoIn, VariableDeclarationNoIn, InitialiserNoIn, AssignmentExpressionNoIn 縺瑚ゥ穂セ。縺輔l繧九€�

12.3 遨コ譁� (Empty Statement)

Syntax
EmptyStatement :
;
Semantics

逕滓�隕丞援 EmptyStatement : ; 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. (normal, empty, empty) 繧定ソ斐☆縲�

12.4 蠑乗枚 (Expression Statement)

Syntax
ExpressionStatement :
[lookahead ∉ {{, function} ] Expression ;

Block 縺ィ譖匁乂縺ォ縺ェ繧九%縺ィ縺九i縲� ExpressionStatement 縺ッ螟ァ諡ャ蠑ァ "{" 縺ァ髢句ァ九☆繧九%縺ィ縺ッ縺ァ縺阪↑縺�%縺ィ縺ォ豕ィ諢上€ゅ∪縺溘€� FunctionDeclaration 縺ィ譖匁乂縺ォ縺ェ繧九%縺ィ縺九i縲� ExpressionStatement 縺ッ function 繧ュ繝シ繝ッ繝シ繝峨〒髢句ァ九☆繧九%縺ィ繧ゅ〒縺阪↑縺�€�

Semantics

逕滓�隕丞援 ExpressionStatement : [lookahead ∉ {{, function}] Expression ; 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Expression 繧定ゥ穂セ。縺吶k縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. (normal, Result(2), empty) 繧定ソ斐☆縲�

12.5 if 譁� (The if Statement)

Syntax
IfStatement :
if ( Expression ) Statement else Statement
if ( Expression ) Statement

髢「騾」縺吶k if 縺ョ驕ク謚槭′譖匁乂縺ェ else 縺ッ縲∝庄閭ス縺ェ髯舌j譛€繧りソ代>縲�未騾」縺励↑縺代l縺ー隧イ蠖薙☆繧� else 縺後↑縺�h縺�↑ if 縺ォ縺昴l縺槭l髢「騾」縺励※縺�k縲�

Semantics

逕滓�隕丞援 IfStatement : if ( Expression ) Statement else Statement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Expression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToBoolean(Result(2)) 繧貞他蜃コ縺吶€�
  4. Result(3) 縺� false 縺ェ繧峨�縲√せ繝�ャ繝� 7 縺ク縲�
  5. 譛€蛻昴� Statement 繧定ゥ穂セ。縲�
  6. Result(5) 繧定ソ斐☆縲�
  7. 2 逡ェ逶ョ縺ョ Statement 繧定ゥ穂セ。縲�
  8. Result(7) 繧定ソ斐☆縲�

逕滓�隕丞援 IfStatement : if ( Expression ) Statement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Expression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToBoolean(Result(2)) 繧貞他蜃コ縺吶€�
  4. Result(3) 縺� false 縺ェ繧峨�縲� (normal, empty, empty) 繧定ソ斐☆縲�
  5. Result(3) 縺� false 縺ェ繧峨�縲� (normal, empty, empty) 繧定ソ斐☆縲�
  6. Statement 繧定ゥ穂セ。縲�
  7. Result(5) 繧定ソ斐☆縲�

12.6 郢ー霑斐@譁� (Iteration Statements)

郢ー霑斐@譁�� (繧ュ繝シ繝ッ繝シ繝峨→諡ャ蠑ァ縺ョ蛻カ蠕。讒矩€�縺ァ讒区�縺輔l繧�) 繝倥ャ繝€縺ィ (Statement 縺ァ讒区�縺輔l繧�) 譛ャ譁�〒讒区�縺輔l繧九€�

Syntax
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

12.6.1 do-while 譁� (The do-while Statement)

逕滓�隕丞援 do Statement while ( Expression ); 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. V = empty 縺ィ縺吶k縲�
  2. Statement 繧定ゥ穂セ。縲�
  3. Result(2).value 縺� empty 縺ァ縺ェ縺代l縺ー縲� V = Result(2).value 縺ィ縺吶k縲�
  4. Result(2).type 縺� continue 縺ァ縲√°縺、 Result(2).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ蜀�↓縺ゅl縺ー縲√せ繝�ャ繝� 7 縺ク縲�
  5. Result(2).type 縺� break 縺ァ縲√°縺、 Result(2).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ蜀�↓縺ゅl縺ー縲� (normal, V, empty) 繧定ソ斐☆縲�
  6. Result(2) 縺御クュ騾泌ョ御コ�↑繧峨�縲� Result(2) 繧定ソ斐☆縲�
  7. Expression 繧定ゥ穂セ。縲�
  8. GetValue(Result(7)) 繧貞他蜃コ縺吶€�
  9. ToBoolean(Result(8)) 繧貞他蜃コ縺吶€�
  10. Result(9) 縺� true 縺ェ繧峨�縲√せ繝�ャ繝� 2 繝倥€�
  11. (normal, V, empty) 繧定ソ斐☆縲�

12.6.2 while 譁� (The while statement)

逕滓�隕丞援 IterationStatement : while ( Expression ) Statement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. V = empty 縺ィ縺吶k縲�
  2. Expression 繧定ゥ穂セ。縲�
  3. GetValue(Result(2)) 繧貞他蜃コ縺吶€�
  4. ToBoolean(Result(3)) 繧貞他蜃コ縺吶€�
  5. Result(4) 縺� false 縺ェ繧峨�縲� (normal, V, empty) 繧定ソ斐☆縲�
  6. Statement 繧定ゥ穂セ。縲�
  7. Result(6).value 縺� empty 縺ァ縺ェ縺代l縺ー縲� V = Result(6).value 縺ィ縺吶k縲�
  8. Result(6).type 縺� continue 縺九▽ Result(6).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ縺ェ繧峨�縲√せ繝�ャ繝� 2 縺ク縲�
  9. Result(6).type 縺� break 縺九▽ Result(6).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ縺ェ繧峨�縲� (normal, V, empty) 繧定ソ斐☆縲�
  10. Result(6) 縺御クュ騾泌ョ御コ�↑繧峨�縲� Result(6) 繧定ソ斐☆縲�
  11. 繧ケ繝�ャ繝� 2 縺ク縲�

12.6.3 for 譁� (The for Statement)

逕滓�隕丞援 IterationStatement : for (ExpressionNoInopt ; Expressionopt ; Expressionopt) Statement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. ExpressionNoIn 縺悟ュ伜惠縺励↑縺代l縺ー縲√せ繝�ャ繝� 4 縺ク縲�
  2. ExpressionNoIn 繧定ゥ穂セ。縲�
  3. GetValue(Result(2)) 繧貞他蜃コ縺吶€� (縺薙�蛟、縺ッ菴ソ逕ィ縺励↑縺�€�)
  4. V = empty 縺ィ縺吶k縲�
  5. 譛€蛻昴� Expression 縺悟ュ伜惠縺励↑縺代l縺ー縲√せ繝�ャ繝� 10 縺ク縲�
  6. 譛€蛻昴� Expression 繧定ゥ穂セ。縲�
  7. GetValue(Result(6)) 繧貞他蜃コ縺吶€�
  8. ToBoolean(Result(7)) 繧貞他蜃コ縺吶€�
  9. Result(8) 縺� false 縺ェ繧峨�縲√せ繝�ャ繝� 19 縺ク縲�
  10. Statement 繧定ゥ穂セ。縲�
  11. Result(10).value 縺� empty 縺ァ縺ェ縺�↑繧峨�縲� V = Result(10).value 縺ィ縺吶k縲�
  12. Result(10).type 縺� break 縺九▽ Result(10).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ縺ェ繧峨�縲√せ繝�ャ繝� 19 縺ク縲�
  13. Result(10).type 縺� continue 縺九▽ Result(10).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ縺ェ繧峨�縲√せ繝�ャ繝� 15 縺ク縲�
  14. Result(10) 縺御クュ騾泌ョ御コ�↑繧峨� Result(10) 繧定ソ斐☆縲�
  15. 2 逡ェ逶ョ縺ョ Expression 縺悟ュ伜惠縺励↑縺代l縺ー縲√せ繝�ャ繝� 5 縺ク縲�
  16. 2 逡ェ逶ョ縺ョ Expression 繧定ゥ穂セ。縲�
  17. GetValue(Result(16) 繧貞他蜃コ縺吶€� (縺薙�蛟、縺ッ菴ソ逕ィ縺励↑縺�€�)
  18. 繧ケ繝�ャ繝� 5 縺ク縲�
  19. (normal, V, empty) 繧定ソ斐☆縲�

逕滓�隕丞援 IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. VariableDeclarationListNoIn 繧定ゥ穂セ。縲�
  2. V = empty 縺ィ縺吶k縲�
  3. 1 蛟狗岼縺ョ Expression 縺悟ュ伜惠縺励↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 8 縺ク縲�
  4. 1 蛟狗岼縺ョ Expression 繧定ゥ穂セ。縲�
  5. GetValue(Result(4)) 繧貞他蜃コ縺吶€�
  6. ToBoolean(Result(5)) 繧貞他蜃コ縺吶€�
  7. Result(6) 縺� false 縺ェ繧峨�縲� 繧ケ繝�ャ繝� 17 縺ク縲�
  8. Statement 繧定ゥ穂セ。縲�
  9. Result(8).value 縺檎ゥコ縺ァ縺ェ縺�↑繧峨�縲� V = Result(8).value 縺ィ縺吶k縲�
  10. Result(8).type 縺� break 縺九▽ Result(8).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ蜀�↑繧峨�縲� 繧ケ繝�ャ繝� 17 縺ク縲�
  11. Result(8).type 縺� continue 縺九▽ Result(8).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ蜀�↑繧峨�縲� 繧ケ繝�ャ繝� 13 縺ク縲�
  12. Result(8) 縺御クュ騾泌ョ御コ�↑繧峨�縲� Result(8) 繧定ソ斐☆縲�
  13. 2 蛟狗岼縺ョ Expression 縺悟ュ伜惠縺励↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 3 縺ク縲�
  14. 2 蛟狗岼縺ョ Expression 繧定ゥ穂セ。縲�
  15. GetValue(Result(14)) 繧貞他蜃コ縺吶€� (縺薙�蛟、縺ッ菴ソ逕ィ縺励↑縺�€�)
  16. 繧ケ繝�ャ繝� 3 縺ク縲�
  17. (normal, V, empty) 繧定ソ斐☆縲�

12.6.4 for-in 譁� (The for-in Statement)

逕滓�隕丞援 IterationStatement : for ( LeftHandSideExpression in Expression ) Statement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Expression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToObject(Result(2)) 繧貞他蜃コ縺吶€�
  4. V = empty 縺ィ縺吶k縲�
  5. DontEnum 螻樊€ァ繧呈戟縺溘↑縺�€� Result(3) 縺ョ谺。縺ョ繝励Ο繝代ユ繧」縺ョ蜷榊燕繧貞叙蠕励☆繧九€ゅ◎縺ョ繧医≧縺ェ繝励Ο繝代ユ繧」縺悟ュ伜惠縺励↑縺�↑繧峨�縲� 繧ケ繝�ャ繝� 14 縺ク縲�
  6. LeftHandSideExpression 繧定ゥ穂セ。 (縺薙l縺ッ郢ー霑斐@隧穂セ。縺輔l縺ヲ繧医>)縲�
  7. PutValue(Result(6), Result(5)) 繧貞他蜃コ縺吶€�
  8. Statement 繧定ゥ穂セ。縲�
  9. Result(8).value 縺� empty 縺ァ縺ェ縺�↑繧峨�縲� V = Result(8).value 縺ィ縺吶k縲�
  10. Result(8).type 縺� break 縺九▽ Result(8).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ蜀�↑繧峨�縲� 繧ケ繝�ャ繝� 14 縺ク縲�
  11. Result(8).type 縺� continue 縺九▽ Result(8).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ蜀�↑繧峨�縲� 繧ケ繝�ャ繝� 5 縺ク縲�
  12. Result(8) 縺御クュ騾泌ョ御コ�↑繧峨�縲� Result(8) 繧定ソ斐☆縲�
  13. 繧ケ繝�ャ繝� 5 縺ク縲�
  14. (normal, V, empty) 繧定ソ斐☆縲�

逕滓�隕丞援 IterationStatement : for ( var VariableDeclarationNoIn in Expression ) Statement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. VariableDeclarationNoIn 繧定ゥ穂セ。縲�
  2. Expression 繧定ゥ穂セ。縲�
  3. GetValue(Result(2)) 繧貞他蜃コ縺吶€�
  4. ToObject(Result(3)) 繧貞他蜃コ縺吶€�
  5. V = empty 縺ィ縺吶k縲�
  6. DontEnum 螻樊€ァ繧呈戟縺溘↑縺�€� Result(4) 縺ョ谺。縺ョ繝励Ο繝代ユ繧」繧貞叙蠕励☆繧九€ゅ◎縺ョ繧医≧縺ェ繝励Ο繝代ユ繧」縺悟ュ伜惠縺励↑縺�↑繧峨�縲√せ繝�ャ繝� 15 縺ク縲�
  7. 縺昴l縺� Identifier 縺ァ縺ゅk縺九�繧医≧縺ォ Result(1) 繧定ゥ穂セ。; 11.1.2 蜿ら�(縺薙l縺ッ郢ー霑斐@隧穂セ。縺輔l縺ヲ繧医>).
  8. PutValue(Result(7), Result(6)) 繧貞他蜃コ縺吶€�
  9. Statement 繧定ゥ穂セ。縲�
  10. Result(9).value 縺� empty 縺ァ縺ェ縺�↑繧峨�縲� V = Result(9).value 縺ィ縺吶k縲�
  11. Result(9).type 縺� break 縺九▽ Result(9).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ蜀�↑繧峨�縲� 繧ケ繝�ャ繝� 15 縺ク縲�
  12. Result(9).type 縺� continue 縺九▽ Result(9).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ蜀�↑繧峨�縲� 繧ケ繝�ャ繝� 6 縺ク縲�
  13. Result(8) 縺御クュ騾泌ョ御コ�↑繧峨�縲� Result(8) 繧定ソ斐☆縲�
  14. 繧ケ繝�ャ繝� 6 縺ク縲�
  15. (normal, V, empty) 繧定ソ斐☆縲�

繝励Ο繝代ユ繧」縺ョ蛻玲嫌譁ケ豕� (1 蛟狗岼縺ョ繧「繝ォ繧エ繝ェ繧コ繝�縺ョ繧ケ繝�ャ繝� 5, 2 蛟狗岼縺ョ繧ケ繝�ャ繝� 6) 縺ッ螳溯」�セ晏ュ倥〒縺ゅk縲ょ�謖吶�鬆�コ上�繧ェ繝悶ず繧ァ繧ッ繝医↓繧医j螳夂セゥ縺輔l繧九€ょ�謖吶&繧後※縺�k繧ェ繝悶ず繧ァ繧ッ繝医�繝励Ο繝代ユ繧」縺ッ蛻玲嫌荳ュ縺ォ蜑企勁縺輔l縺ヲ繧ゅh縺�€ょ�謖吩クュ縺セ縺�謖吶£繧峨l縺ヲ縺�↑縺��繝ュ繝代ユ繧」縺悟炎髯、縺輔l繧九↑繧峨�縲√◎縺ョ繝励Ο繝代ユ繧」縺ッ蛻玲嫌縺輔l縺ェ縺�€ょ�謖吩クュ繧ェ繝悶ず繧ァ繧ッ繝医↓譁ー縺励>繝励Ο繝代ユ繧」縺瑚ソス蜉�縺輔l繧九↑繧峨�縲∵眠縺溘↓霑ス蜉�縺輔l縺溘�繝ュ繝代ユ繧」縺ッ迴セ蝨ィ縺ョ蛻玲嫌縺ォ縺翫>縺ヲ謖吶£繧峨l繧九%縺ィ繧剃ソ晁ィシ縺輔l縺ェ縺�€�

繧ェ繝悶ず繧ァ繧ッ繝医�繝励Ο繝代ユ繧」蛻玲嫌縺ッ縲√◎縺ョ繝励Ο繝医ち繧、繝励�繝励Ο繝代ユ繧」縲√�繝ュ繝医ち繧、繝励�繝励Ο繝医ち繧、繝励�繝励Ο繝代ユ繧」縲∽サ・荳句酔讒倥↓蜀榊クー逧�↓繝励Ο繝代ユ繧」繧貞性繧€; 縺励°縺励€∝酔蜷阪�繝励Ο繝代ユ繧」繧呈戟縺、繝励Ο繝医ち繧、繝励メ繧ァ繝シ繝ウ蜀��蜑阪�繧ェ繝悶ず繧ァ繧ッ繝医↓繧医j "髫�縺輔l繧�" 縺ェ繧峨�縲√�繝ュ繝医ち繧、繝励�繝励Ο繝代ユ繧」縺ッ蛻玲嫌縺輔l縺ェ縺�€�

12.7 continue 譁� (The continue Statement)

Syntax
ContinueStatement :
continue [LineTerminator 辟。縺余 Identifieropt ;
Semantics

谺。縺ョ縺�★繧後°縺檎悄縺ァ縺ゅk縺ィ縺阪€√�繝ュ繧ー繝ゥ繝�縺ッ讒区枚逧�↓荳肴ュ」縺ァ縺ゅk縺ィ閠�∴繧峨l繧�:

  • 繝励Ο繧ー繝ゥ繝�縺碁∈謚樒噪 Identifier 繧呈戟縺溘↑縺� continue 螳」險€縺ァ讒区�縺輔l縺ヲ縺�※縲∫峩謗・縺セ縺溘�髢捺磁逧�↓(髢「謨ー縺ョ蛹コ蛻�j縺ォ縺セ縺溘′繧峨↑縺�)縲� IterationStatement 蜀�↓繝阪せ繝医@縺ェ縺ヲ縺�↑縺�€�
  • 繝励Ο繧ー繝ゥ繝�縺碁∈謚樒噪 Identifier 繧呈戟縺、 continue 螳」險€縺ァ讒区�縺輔l縺ヲ縺�※縲�哩縺倥◆ (髢「謨ー縺ョ蛹コ蛻�j縺ォ縺ッ縺セ縺溘′繧峨↑縺�) IterationStatement 縺ョ繝ゥ繝吶Ν繧サ繝�ヨ蜀�↓ Identifier 縺悟�迴セ縺励↑縺�

Identifier 縺ョ縺ェ縺� ContinueStatement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. (continue, empty, empty) 繧定ソ斐☆縲�

Identifier 繧呈戟縺、 ContinueStatement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. (continue, empty, Identifier) 繧定ソ斐☆縲�

12.8 break 譁� (The break Statement)

Syntax
BreakStatement :
break [LineTerminator 辟。縺余 Identifieropt ;
Semantics

谺。縺ョ縺�★繧後°縺檎悄縺ァ縺ゅk蝣エ蜷医€√�繝ュ繧ー繝ゥ繝�縺ッ讒区枚逧�↓荳肴ュ」縺ァ縺ゅk縺ィ閠�∴繧峨l繧�:

  • 繝励Ο繧ー繝ゥ繝�縺碁∈謚樒噪縺ェ Identifier 繧呈戟縺溘↑縺� break 譁�r蜷ォ縺ソ縲√◎繧後′ IterationStatement 縺セ縺溘� SwitchStatement 蜀�Κ縺ァ逶エ謗・逧�∪縺溘�髢捺磁逧�↓繝阪せ繝医@縺ヲ縺�↑縺�€� (髢「謨ー縺ョ蠅�阜縺ォ縺ッ莠、繧上i縺ェ縺�)
  • 繝励Ο繧ー繝ゥ繝�縺碁∈謚樒噪縺ェ Identifier 繧呈戟縺、 break 譁�r蜷ォ縺ソ縲� Identifier 縺� Statement 繧貞峇繧€繝ゥ繝吶Ν繧サ繝�ヨ蜀�↓蜃コ迴セ縺励↑縺�€� (髢「謨ー縺ョ蠅�阜縺ォ縺ッ莠、繧上i縺ェ縺�)

Identifier 縺ョ縺ェ縺� BreakStatement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. (break, empty, empty) 繧定ソ斐☆縲�

Identifier 縺ョ縺ゅk BreakStatement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. (break, empty, Identifier) 繧定ソ斐☆縲�

12.9 return 譁� (The return Statement)

Syntax
ReturnStatement :
return [LineTerminator 辟。縺余 Expressionopt ;
Semantics

ECMAScript 繝励Ο繧ー繝ゥ繝�縺ッ縲√◎繧後′ FunctionBody 蜀�Κ\縺ァ縺ェ縺� return 譁�r蜷ォ繧€蝣エ蜷医€∵ァ区枚逧�↓荳肴ュ」縺ィ閠�∴繧峨l繧九€�return 譁��縲�未謨ー縺ォ螳溯。後r蛛懈ュ「縺輔○縲∝€、繧貞他蜃コ蛛エ縺ォ霑斐&縺帙k縲� Expression 縺檎怐逡・縺輔l繧句�エ蜷医€∵綾繧雁€、縺ッ undefined 縺ァ縺ゅk縲ゅ◎縺�〒縺ェ縺代l縺ー縲∵綾繧雁€、縺ッ Expression 縺ョ蛟、縺ァ縺ゅk縲�

逕滓�隕丞援 ReturnStatement : return [no LineTerminator here] Expressionopt ; 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Expression 縺悟ュ伜惠縺励↑縺代l縺ー (return, undefined, empty) 繧定ソ斐☆縲�
  2. Expression 繧定ゥ穂セ。縲�
  3. GetValue(Result(2)) 繧貞他蜃コ縺吶€�
  4. (return, Result(3), empty) 繧定ソ斐☆縲�

12.10 with 譁� (The with Statement)

Syntax
WithStatement :
with ( Expression ) Statement
Description

with 譁��迴セ蝨ィ縺ョ螳溯。後さ繝ウ繝�く繧ケ繝医�繧ケ繧ウ繝シ繝鈴€」骼悶�蜈磯�ュ縺ォ邂怜�縺輔l縺溘が繝悶ず繧ァ繧ッ繝医r霑ス蜉�縺励€√%縺ョ諡。蠑オ縺輔l縺溘せ繧ウ繝シ繝鈴€」骼悶r逕ィ縺�※譁�r螳溯。後@縲√せ繧ウ繝シ繝鈴€」骼悶r闢�ゥ阪☆繧九€�

Semantics

逕滓�隕丞援 WithStatement : with ( Expression ) Statement 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Expression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToObject(Result(2)) 繧貞他蜃コ縺吶€�
  4. 繧ケ繧ウ繝シ繝鈴€」骼悶�蜈磯�ュ縺ォ Result(3) 繧定ソス蜉�縲�
  5. 繧ケ繝�ャ繝� 4 縺九i諡。蠑オ縺輔l繧九せ繧ウ繝シ繝鈴€」骼悶r菴ソ逕ィ縺励※ Statement 繧定ゥ穂セ。縲�
  6. C 繧� Result(5) 縺ィ縺吶k縲ゅせ繝�ャ繝� 5 縺ァ萓句、悶′謚輔£繧峨l縺溘i縲� C 繧� (throw, V, empty) 縺ィ縺吶k縲� V 縺ョ縺ィ縺薙m縺ッ萓句、悶〒縺ゅk縲�(螳溯。後�萓句、悶′逋コ逕溘@縺ェ縺九▲縺溘°縺ョ繧医≧縺ォ騾イ陦後☆繧九€�)
  7. 繧ケ繧ウ繝シ繝鈴€」骼悶�蜈磯�ュ縺九i Result(3) 繧貞叙繧企勁縺上€�
  8. C 繧定ソ斐☆縲�

NOTE 蝓九a霎シ縺セ繧後◆ Statement 縺ォ縺ゥ縺ョ繧医≧縺ォ蛻カ蠕。縺梧ョ九▲縺溘→縺励※繧ゅ€�€壼クク縺ァ繧阪≧縺ィ荳ュ騾泌ョ御コ�d萓句、悶�蠖「蠑上〒縺ゅm縺�→縲√せ繧ウ繝シ繝励メ繧ァ繝シ繝ウ縺ォ縺ッ蟶ク縺ォ萓晉┯縺ョ迥カ諷九′闢�ゥ阪&繧後k縲�

12.11 switch 譁� (The switch Statement)

Syntax
SwitchStatement :
switch ( Expression ) CaseBlock
CaseBlock :
{ CaseClausesopt }
{ CaseClausesopt DefaultClause CaseClausesopt }
CaseClauses :
CaseClause
CaseClauses CaseClause
CaseClause :
case Expression : StatementListopt
DefaultClause :
default : StatementListopt
Semantics

逕滓�隕丞援 SwitchStatement : switch ( Expression ) CaseBlock 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Expression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. CaseBlock 繧定ゥ穂セ。縺励€√ヱ繝ゥ繝。繝シ繧ソ縺ィ縺励※ Result(2) 繧呈ク。縺吶€�
  4. Result(3).type 縺� break 縺ァ Result(3).target 縺檎樟蝨ィ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ縺ェ繧峨�縲� (normal, Result(3).value, empty) 繧定ソ斐☆縲�
  5. Result(3) 繧定ソ斐☆縲�

逕滓�隕丞援 CaseBlock : { CaseClausesopt } 縺ッ蜈・蜉帙ヱ繝ゥ繝。繝シ繧ソ input 繧剃ク弱∴繧峨l縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. V = empty 縺ィ縺吶k縲�
  2. A 繧偵た繝シ繧ケ繝�く繧ケ繝磯��� CaseClause 鬆�岼縺ョ繝ェ繧ケ繝医→縺吶k縲�
  3. C 繧� A 蜀��谺。縺ョ CaseClause 縺ィ縺吶k縲ゅ◎縺ョ繧医≧縺ェ CaseClause 縺後↑縺代l縺ー縲√せ繝�ャ繝� 16 縺ク縲�
  4. C 繧定ゥ穂セ。縺吶k縲�
  5. input 縺� !-- 貍皮ョ怜ュ舌〒螳夂セゥ縺輔l繧九h縺�↓遲峨@縺上↑縺代l縺ー縲� 繧ケ繝�ャ繝� 3 縺ク縲�
  6. C 縺� StatementList 繧呈戟縺溘↑縺代l縺ー縲√せ繝�ャ繝� 10 縺ク縲�
  7. C 縺ョ StatementList 繧定ゥ穂セ。縺励€� R 繧偵◎縺ョ邨先棡縺ィ縺吶k縲�
  8. R 縺御クュ騾泌ョ御コ�↑繧峨�縲� R 繧定ソ斐☆縲�
  9. V = R.value 縺ィ縺吶k縲�
  10. C 繧� A 蜀��谺。縺ョ CaseClause 縺ィ縺吶k縲ゅ◎縺ョ繧医≧縺ェ CaseClause 縺後↑縺代l縺ー縲√せ繝�ャ繝� 16 縺ク縲�
  11. C 縺� StatementList 繧呈戟縺溘↑縺代l縺ー縲√せ繝�ャ繝� 10 縺ク縲�
  12. C 縺ョ StatementList 繧定ゥ穂セ。縺励€� R 繧偵◎縺ョ邨先棡縺ィ縺吶k縲�
  13. R.value 縺� empty 縺ァ縺ェ縺代l縺ー縲� V = R.value 縺ィ縺吶k縲�
  14. R 縺御クュ騾泌ョ御コ�↑繧峨�縲� (R.type, V, R.target) 繧定ソ斐☆縲�
  15. 繧ケ繝�ャ繝� 10 縺ク縲�
  16. (normal, V, empty) 繧定ソ斐☆縲�

逕滓�隕丞援 CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt } 縺ッ蜈・蜉帙ヱ繧峨Γ繝シ繧ソ input 繧剃ク弱∴繧峨l縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. V = empty 縺ィ縺吶k縲�
  2. A 繧� 1 蛟狗岼縺ョ CaseCloses 蜀��繧ス繝シ繧ケ繝�く繧ケ繝磯��� CaseClause 鬆�岼縺ョ繝ェ繧ケ繝医→縺吶k縲�
  3. C 繧� A 蜀��谺。縺ョ CaseClause 縺ィ縺吶k縲ゅ◎縺ョ繧医≧縺ェ CaseClause 縺後↑縺代l縺ー縲√せ繝�ャ繝� 11 縺ク縲�
  4. C 繧定ゥ穂セ。縺吶k縲�
  5. input 縺� Result(4) 縺ィ !== 貍皮ョ怜ュ舌↓繧医j螳夂セゥ縺輔l繧九h縺�↓遲峨@縺上↑縺代l縺ー縲√せ繝�ャ繝� 3 縺ク縲�
  6. C 縺� StatementList 繧呈戟縺溘↑縺代l縺ー縲√せ繝�ャ繝� 20 縺ク縲�
  7. C 縺ョ StatementList 繧定ゥ穂セ。縺励€� R 繧偵◎縺ョ邨先棡縺ィ縺吶k縲�
  8. R 縺御クュ騾泌ョ御コ�↑繧峨�縲� R 繧定ソ斐☆縲�
  9. V = R.value 縺ィ縺吶k縲�
  10. 繧ケ繝�ャ繝� 20 縺ク縲�
  11. B 繧� 2 蛟狗岼縺ョ CaseClauses 蜀��繧ス繝シ繧ケ繝�く繧ケ繝磯��� CaseClause 鬆�岼縺ョ繝ェ繧ケ繝医→縺吶k縲�
  12. C 繧� B 蜀��谺。縺ョ CaseClause 縺ィ縺吶k縲ゅ◎縺ョ繧医≧縺ェ CaseClause 縺後↑縺代l縺ー縲√せ繝�ャ繝� 26 縺ク縲�
  13. C 繧定ゥ穂セ。縺吶k縲�
  14. input 縺� Result(13) 縺ィ !== 貍皮ョ怜ュ舌↓繧医j螳夂セゥ縺輔l繧九h縺�↓遲峨@縺上↑縺代l縺ー縲√せ繝�ャ繝� 12 縺ク縲�
  15. C 縺� StatementList 繧呈戟縺溘↑縺代l縺ー繧ケ繝�ャ繝� 31 縺ク縲�
  16. C 縺ョ StatementList 繧定ゥ穂セ。縺励€� R 繧堤オ先棡縺ィ縺吶k縲�
  17. R 縺御クュ騾泌ョ御コ�↑繧峨� R 繧定ソ斐☆縲�
  18. V = R.value 縺ィ縺吶k縲�
  19. 繧ケ繝�ャ繝� 31 縺ク縲�
  20. C 繧� A 蜀��谺。縺ョ CaseClause 縺ィ縺吶k縲ゅ◎縺ョ繧医≧縺ェ CaseClause 縺後↑縺代l縺ー縲√せ繝�ャ繝� 26 縺ク縲�
  21. C 縺� StatementList 繧呈戟縺溘↑縺代l縺ー縲√せ繝�ャ繝� 20 縺ク縲�
  22. C 縺ョ StatementList 繧定ゥ穂セ。縺励€� R 繧偵◎縺ョ邨先棡縺ィ縺吶k縲�
  23. R.value 縺� empty 縺ァ縺ェ縺代l縺ー縲� V = R.value 縺ィ縺吶k縲�
  24. R 縺御クュ騾泌ョ御コ�↑繧峨�縲� (R.type, V, R.target) 繧定ソ斐☆縲�
  25. 繧ケ繝�ャ繝� 20 縺ク縲�
  26. DefaultClause 縺� StatementList 繧呈戟縺溘↑縺代l縺ー縲√せ繝�ャ繝� 30 縺ク縲�
  27. DefaultClause 縺ョ StatementList 繧定ゥ穂セ。縺励€� R 繧偵◎縺ョ邨先棡縺ィ縺吶k縲�
  28. R.value 縺� empty 縺ァ縺ェ縺代l縺ー縲� V = R.value 縺ィ縺吶k縲�
  29. R 縺御クュ騾泌ョ御コ�↑繧峨�縲� (R.type, V, R.target) 繧定ソ斐☆縲�
  30. B 繧� 2 蛟狗岼縺ョ CaseClauses 蜀��繧ス繝シ繧ケ繝�く繧ケ繝磯��� CaseClause 鬆�岼縺ョ繝ェ繧ケ繝医→縺吶k縲�
  31. C 繧� B 蜀��谺。縺ョ CaseClause 縺ィ縺吶k縲ゅ◎縺ョ繧医≧縺ェ CaseClause 縺後↑縺代l縺ー縲√せ繝�ャ繝� 37 縺ク縲�
  32. C 縺� StatementList 繧呈戟縺溘↑縺�↑繧峨�縲√せ繝�ャ繝� 31 縺ク縲�
  33. C 縺ョ StatementList 繧定ゥ穂セ。縺励€� R 繧偵◎縺ョ邨先棡縺ィ縺吶k縲�
  34. R.value 縺� empty 縺ァ縺ェ縺�↑繧峨�縲� V = R.value 縺ィ縺吶k縲�
  35. R 縺御クュ騾泌ョ御コ�↑繧峨�縲� (R.type, V, R.target) 繧定ソ斐☆縲�
  36. 繧ケ繝�ャ繝� 31 縺ク縲�
  37. (normal, V, empty) 繧定ソ斐☆縲�

逕滓�隕丞援 CaseClause : case Expression : StatementListopt 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Expression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. Result(2) 繧定ソ斐☆縲�

NOTE CaseClause 隧穂セ。縺ッ髢「騾」 StatementList 繧貞ョ溯。後@縺ェ縺�€ょ腰邏斐↓ Expression 繧定ゥ穂セ。縺励€� StatementList 螳溯。碁幕蟋句愛螳壹↓ CaseBlock 繧「繝ォ繧エ繝ェ繧コ繝�縺檎畑縺�k蛟、繧定ソ斐☆縲�

12.12 繝ゥ繝吶Ν莉倥″譁� (Labelled Statements)

Syntax
LabelledStatement :
Identifier : Statement
Semantics

Statement 縺ォ繝ゥ繝吶Ν繧貞�陦後&縺帙※繧医>縲ゅΛ繝吶Ν莉倥″譁��縲√Λ繝吶Ν莉倥″ break 蜿翫� continue 譁�→縺ィ繧ゅ↓菴ソ逕ィ縺輔l繧九□縺代〒縺ゅk縲� ECMAScript 縺ッ goto 譁�r謖√◆縺ェ縺�€�

ECMAScript 繝励Ο繧ー繝ゥ繝�縺ッ縲� LabelledStatement 縺ォ繧医▲縺ヲ繝ゥ繝吶Ν縺ィ蜷後§ Identifier 縺ァ髢峨§繧峨l縺ヲ縺�k LabelledStatement 繧貞性繧€蝣エ蜷医€∵ァ区枚逧�↓荳肴ュ」縺ァ縺ゅk縺ィ閠�∴繧峨l繧九€ゅ%繧後�縲√Λ繝吶Ν莉倥¢縺輔l縺滓枚荳ュ縺ァ繝阪せ繝医&繧後k FunctionDeclaration 縺ョ譛ャ譁��縺ォ逶エ謗・縺ゅk縺��髢捺磁逧�↓迴セ繧上l繧九Λ繝吶Ν縺ォ縺ッ蠖薙※縺ッ縺セ繧峨↑縺�€�

逕滓�隕丞援 Identifier : Statement 縺ッ縲� Statement 縺ョ繝ゥ繝吶Ν繧サ繝�ヨ縺ォ Identifier 繧定ソス蜉�縺吶k蠖「縺ァ隧穂セ。縺輔l縲� Statement 繧定ゥ穂セ。縺吶k縲� LabelledStatement 閾ェ霄ォ縺檎ゥコ縺ァ縺ェ縺�Λ繝吶Ν繧サ繝�ヨ繧呈戟縺、縺ェ繧峨�縲√◎繧後i縺ョ繝ゥ繝吶Ν縺ッ縺セ縺溘◎繧後′隧穂セ。縺輔l繧句燕縺ォ Statement 縺ョ繝ゥ繝吶Ν繧サ繝�ヨ縺ォ霑ス蜉�縺輔l繧九€� L 繧� Identifier 縺ィ遲峨@縺�→縺励※ Statement 隧穂セ。縺ョ邨先棡縺� (break, V, L) 縺ェ繧峨�縲∫函謌占ヲ丞援縺ッ (normal, V, empty) 繧堤オ先棡縺ィ縺吶k縲�

LabelledStatement 縺ョ隧穂セ。縺ォ蜈育ォ九▲縺ヲ縲∝性縺セ繧後k Statement 縺ッ遨コ縺ョ繝ゥ繝吶Ν繧サ繝�ヨ繧呈園譛峨☆繧九→隕九↑縺輔l繧九′縲√◎繧後′ IterationStatement 縺ゅk縺�� SwitchStatement 縺ェ繧峨�縲√◎縺ョ蝣エ蜷医◎繧後�蜊倅ク€縺ョ隕∫エ� empty 縺九i縺ェ繧九Λ繝吶Ν繧サ繝�ヨ繧呈園譛峨☆繧九→隕九↑縺輔l繧九€�

12.13 throw 譁� (The throw statement)

Syntax
ThrowStatement :
throw [LineTerminator 辟。縺余 Expression ;
Semantics

逕滓�隕丞援 ThrowStatement : throw [no LineTerminator here] Expression ; 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Expression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. (throw, Result(2), empty) 繧定ソ斐☆縲�

12.14 try 譁� (The try statement)

Syntax
TryStatement :
try Block Catch
try Block Finally
try Block Catch Finally
Catch :
catch (Identifier ) Block
Finally :
finally Block
Description

try 譁��縲∝ョ溯。梧凾繧ィ繝ゥ繝シ繧� throw 譁��繧医≧縺ェ萓句、也噪譚。莉カ縺檎匱逕溘☆繧九さ繝シ繝峨�繝悶Ο繝�け繧貞峇繧€縲� catch 繧ッ繝ュ繝シ繧コ縺ッ萓句、悶↓繝上Φ繝峨Μ繝ウ繧ー縺輔l繧九さ繝シ繝峨r謠蝉セ帙☆繧九€� catch 繧ッ繝ュ繝シ繧コ縺御セ句、悶r蜿励¢蜿悶k縺ィ縺阪€√◎縺ョ Identifier 縺ッ逋コ逕溘@縺滉セ句、悶↓繝舌う繝ウ繝峨&繧後k縲�

Semantics

逕滓�隕丞援 TryStatement : try Block Catch 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Block 繧定ゥ穂セ。縲�
  2. Result(1).type 縺� throw 縺ァ縺ェ縺代l縺ー縲� Result(1) 繧定ソ斐☆縲�
  3. 繝代Λ繝。繝シ繧ソ 縺ォ Result(1) 繧剃サ・縺」縺ヲ Catch 繧定ゥ穂セ。縲�
  4. Result(3) 繧定ソ斐☆縲�

逕滓�隕丞援 TryStatement : try Block Finally 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Block 繧定ゥ穂セ。縲�
  2. Finally 繧定ゥ穂セ。縲�
  3. Result(2).type 縺� normal 縺ェ繧峨�縲� Result(1) 繧定ソ斐☆縲�
  4. Result(2) 繧定ソ斐☆縲�

逕滓�隕丞援 TryStatement : try Block Catch Finally 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Block 繧定ゥ穂セ。縲�
  2. C = Result(1) 縺ィ縺吶k縲�
  3. Result(1).type 縺� throw 縺ァ縺ェ縺代l縺ー縲√せ繝�ャ繝� 6 縺ク縲�
  4. 繝代Λ繝。繝シ繧ソ 縺ォ Result(1) 繧剃サ・縺」縺ヲ Catch 繧定ゥ穂セ。縲�
  5. C = Result(4) 縺ィ縺吶k縲�
  6. Finally 繧定ゥ穂セ。縲�
  7. Result(6).type 縺� normal 縺ェ繧峨�縲� C 繧定ソ斐☆縲�
  8. Result(6) 繧定ソ斐☆縲�

逕滓�隕丞援 Catch : catch ( Identifier ) Block 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. C 繧偵%縺ョ逕滓�隕丞援縺ォ貂。縺輔l縺ヲ縺�k繝代Λ繝。繝シ繧ソ縺ィ縺吶k縲�
  2. 蠑� new Object() 縺ォ繧医k繧ゅ�縺ァ縺ゅk縺九�繧医≧縺ォ縲∵眠縺励>繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺吶k縲�
  3. Result(2) 縺ォ繝励Ο繝代ユ繧」繧剃ス懈�縺吶k縲ゅ�繝ュ繝代ユ繧」蜷阪� Identifier, 蛟、縺ッ C.value, 螻樊€ァ縺ッ { DontDelete } 縺ァ縺ゅk縲�
  4. 繧ケ繧ウ繝シ繝鈴€」骼悶�蜈磯�ュ縺ォ Result(2) 繧定ソス蜉�縲�
  5. Block 繧定ゥ穂セ。縲�
  6. 繧ケ繧ウ繝シ繝鈴€」骼悶�蜈磯�ュ縺九i Result(2) 繧貞叙繧企勁縺上€�
  7. Result(5) 繧定ソ斐☆縲�

逕滓�隕丞援 Finally : finally Block 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Block 繧定ゥ穂セ。縲�
  2. Result(1) 繧定ソ斐☆縲�

Page Contents

Issued: / Revised: / All rights reserved. © 2002-2016 TAKI