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

13 髢「謨ー螳夂セゥ (Function Definition)

Syntax
FunctionDeclaration :
function Identifier ( FormalParameterListopt ) { FunctionBody }
FunctionExpression :
function Identifieropt ( FormalParameterListopt ) { FunctionBody }
FormalParameterList :
Identifier
FormalParameterList , Identifier
FunctionBody :
SourceElements
Semantics

逕滓�隕丞援 FunctionDeclaration : function Identifier ( FormalParameterListopt ) { FunctionBody } 縺ッ髢「謨ー螳」險€縺ョ縺溘a縺ォ谺。縺ョ繧医≧縺ォ蜃ヲ逅�&繧後k:

  1. FormalParameterList 縺ァ謖�ョ壹&繧後k繝代Λ繝。繝シ繧ソ縺ィ FunctionBody 縺ァ謖�ョ壹&繧後k body 繧堤畑縺�※縲�繧サ繧ッ繧キ繝ァ繝ウ 13.2 縺ォ謖�ョ壹&繧後k繧医≧縺ォ 譁ー縺励> Function 繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺吶k縲ょ�逅�クュ縺ョ螳溯。後さ繝ウ繝�く繧ケ繝医�繧ケ繧ウ繝シ繝鈴€」骼門�繧� Scope 縺ィ縺励※貂。縺吶€�
  2. 蜷榊燕 Identifier 縺ィ Result(1) 縺ョ蛟、繧堤畑縺�※縲�(繧サ繧ッ繧キ繝ァ繝ウ10.1.3 縺ァ謖�ョ壹&繧後k) 迴セ蝨ィ縺ョ螟画焚繧ェ繝悶ず繧ァ繧ッ繝�(variable object)縺ョ繝励Ο繝代ユ繧」繧堤函謌舌☆繧九€�

逕滓�隕丞援 FunctionExpression : function ( FormalParameterListopt ) { FunctionBody } 縺ッ谺。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. FormalParameterList 縺ァ謖�ョ壹&繧後k繝代Λ繝。繝シ繧ソ縺ィ FunctionBody 縺ァ謖�ョ壹&繧後k body 繧堤畑縺�※縲�繧サ繧ッ繧キ繝ァ繝ウ 13.2 縺ォ謖�ョ壹&繧後k繧医≧縺ォ 譁ー縺励> Function 繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺吶k縲ょ�逅�クュ縺ョ螳溯。後さ繝ウ繝�く繧ケ繝医�繧ケ繧ウ繝シ繝鈴€」骼門�繧� Scope 縺ィ縺励※貂。縺吶€�
  2. Result(2) 繧定ソ斐☆縲�

逕滓�隕丞援 FunctionExpression : function Identifier ( FormalParameterListopt ) { FunctionBody } 縺ッ谺。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. 蠑� new Object() 縺ォ繧医k繧ゅ�縺ァ縺ゅk縺九�繧医≧縺ォ縲∵眠縺励>繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺吶k縲�
  2. 繧ケ繧ウ繝シ繝鈴€」骼悶�蜑阪↓ Result(1) 繧定ソス蜉�縺吶k縲�
  3. FormalParameterList 縺ァ謖�ョ壹&繧後k繝代Λ繝。繝シ繧ソ縺ィ FunctionBody 縺ァ謖�ョ壹&繧後k body 繧堤畑縺�※縲�繧サ繧ッ繧キ繝ァ繝ウ 13.2 縺ォ謖�ョ壹&繧後k繧医≧縺ォ 譁ー縺励> Function 繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺吶k縲ょ�逅�クュ縺ョ螳溯。後さ繝ウ繝�く繧ケ繝医�繧ケ繧ウ繝シ繝鈴€」骼門�繧� Scope 縺ィ縺励※貂。縺吶€�
  4. 繧ェ繝悶ず繧ァ繧ッ繝� Result(1) 蜀�↓繝励Ο繝代ユ繧」繧堤函謌舌☆繧九€ゅ�繝ュ繝代ユ繧」蜷阪� Identifier 縺ァ縲∝€、縺ッ Result(3)縲∝ア樊€ァ縺ッ { DontDelete, ReadOnly } 縺ァ縺ゅk縲�
  5. 繧ケ繧ウ繝シ繝鈴€」骼悶�蜑阪°繧� Result(1) 繧帝勁蜴サ縺吶k縲�
  6. Result(3) 繧定ソ斐☆縲�

NOTE FunctionExpression 蜀�� Identifier 縺ッ縲� FunctionExpression 縺ョ FunctionBody 縺ョ蜀�Κ縺九i蜿ら�縺悟庄閭ス縺ァ縲�未謨ー縺ォ縺昴l閾ェ霄ォ縺ョ蜀榊クー逧�他縺ウ蜃コ縺励r險ア蜿ッ縺吶k縲ゅ@縺九@縺ェ縺後i縲� FunctionDeclaration 縺ィ縺ッ逡ー縺ェ繧翫€� FunctionExpression 蜀�� Identifier 繧貞盾辣ァ縺ッ縺ァ縺阪★縲� FunctionExpression 繧帝哩縺倥k繧ケ繧ウ繝シ繝励↓蠖ア髻ソ縺励↑縺�€�

逕滓�隕丞援 FunctionBody : SourceElements 縺ッ谺。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. 髢「謨ー螳」險€縺ョ縺溘a縺ォ SourceElements 繧貞�逅�☆繧九€�
  2. SourceElements 繧定ゥ穂セ。縺吶k縲�
  3. Result(2) 繧定ソ斐☆縲�

13.1 螳夂セゥ (Definitions)

髢「謨ー繧ェ繝悶ず繧ァ繧ッ繝育函謌舌�蜃ヲ逅�r霑ー縺ケ繧九◆繧√€�2 縺、縺ョ螳夂セゥ繧定ヲ√☆繧�:

13.1.1 遲峨@縺�枚豕輔�逕滓�隕丞援 (Equated Grammar Productions)

FunctionBody 譁�ウ慕函謌占ヲ丞援繧堤畑縺�k 2 閠��縲∵ャ。縺ョ縺�■縺ョ荳€縺、縺檎悄縺ァ縺ゅk縺ィ縺阪€∫ュ峨@縺�b縺ョ縺ァ縺ゅk縺ィ螳夂セゥ縺輔l繧�:

  • 蜿梧婿縺後€∝酔縺� ECMAScript 繝励Ο繧ー繝ゥ繝�縺ョ繧ス繝シ繧ケ繝�く繧ケ繝亥�縺ョ蜷後§繝ュ繧ア繝シ繧キ繝ァ繝ウ縺九i蜿門セ励&繧後◆ FunctionBody 繧堤畑縺�※縺�k縲ゅ%縺ョ繧ス繝シ繧ケ繝�く繧ケ繝医�繧ー繝ュ繝シ繝舌Ν繧ウ繝シ繝峨°繧画ァ区�縺輔l縲�繧サ繧ッ繧キ繝ァ繝ウ 10.1.2 縺ョ螳夂セゥ縺ォ蠕薙▲縺ヲ縲√≠繧九b縺ョ縺ッ繝輔ぃ繝ウ繧ッ繧キ繝ァ繝ウ繧ウ繝シ繝峨r蜷ォ繧€縲�
  • 蜿梧婿縺後€∝酔縺� eval 蜻シ縺ウ蜃コ縺�(15.1.2.1) 縺ョ繧ス繝シ繧ケ繝�く繧ケ繝亥�縺ョ蜷後§繝ュ繧ア繝シ繧キ繝ァ繝ウ縺九i蜿門セ励&繧後◆ FunctionBody 繧堤畑縺�※縺�k縲ゅ%縺ョ繧ス繝シ繧ケ繝�く繧ケ繝医� eval 繧ウ繝シ繝峨°繧画ァ区�縺輔l縲�繧サ繧ッ繧キ繝ァ繝ウ 10.1.2 縺ョ螳夂セゥ縺ォ蠕薙▲縺ヲ縲√≠繧九b縺ョ縺ッ繝輔ぃ繝ウ繧ッ繧キ繝ァ繝ウ繧ウ繝シ繝峨r蜷ォ繧€縲�

NOTE Function 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ蜻シ縺ウ蜃コ縺�(15.3.1, 15.3.2) 縺九i蜿門セ励&繧後k FunctionBody 繧堤畑縺�k 2 閠��縲√¢縺励※遲峨@縺�→縺ッ縺ソ縺ェ縺輔l縺ェ縺�€�2 縺、縺ョ逡ー縺ェ繧� eval 蜻シ縺ウ蜃コ縺励°繧牙叙蠕励&繧後k FunctionBody 繧堤畑縺�k 2 閠�b縲√◎繧後′蜷後§蠑墓焚繧呈ク。縺輔l縺ヲ縺�◆縺ィ縺励※繧ゅ€∫ュ峨@縺�→縺ッ縺ソ縺ェ縺輔l縺ェ縺�€�

13.1.2 邨仙粋繧ェ繝悶ず繧ァ繧ッ繝� (Joined Objects)

2 縺、莉・荳翫� Function 繧ェ繝悶ず繧ァ繧ッ繝医′邨仙粋縺励※縺�k縺ィ縺阪€√◎繧後i縺ッ谺。縺ョ迚ケ谿翫↑謖ッ繧玖�縺�r謖√▽:

  • 繧ェ繝悶ず繧ァ繧ッ繝� O 縺ョ髱槫�驛ィ繝励Ο繝代ユ繧」縺御ス懈�縺セ縺溘�險ュ螳壹&繧後k譎ゅ�縲^ 縺ォ邨仙粋縺励◆蜈ィ繧ェ繝悶ず繧ァ繧ッ繝医�隧イ蠖薙☆繧九�繝ュ繝代ユ繧」縺悟クク縺ォ逶エ縺。縺ォ菴懈�縺輔l縲∝酔縺伜€、縺翫h縺ウ螻樊€ァ繧定ィュ螳壹&繧後k縲�
  • 繧ェ繝悶ず繧ァ繧ッ繝� O 縺ョ髱槫�驛ィ繝励Ο繝代ユ繧」縺悟炎髯、縺輔l繧区凾縺ッ縲� O 縺ォ邨仙粋縺励◆蜈ィ繧ェ繝悶ず繧ァ繧ッ繝医�隧イ蠖薙☆繧九�繝ュ繝代ユ繧」繧ょクク縺ォ逶エ縺。縺ォ蜑企勁縺輔l繧九€�
  • 繧ェ繝悶ず繧ァ繧ッ繝� O 縺ィ P 縺檎オ仙粋縺励※縺�l縺ー縲√◎繧後i縺ッ莠偵>縺ォ == 縺翫h縺ウ === 縺ィ縺励※豈碑シ�☆繧九€�
  • 邨仙粋縺ッ驕取ク。逧�〒蟇セ遘ー縺ァ縺ゅk縲ゅ◎縺ョ邨先棡縲√が繝悶ず繧ァ繧ッ繝� O 縺翫h縺ウ P 縺檎オ仙粋縺励€√が繝悶ず繧ァ繧ッ繝� P 縺翫h縺ウ Q 縺檎オ仙粋縺吶k蝣エ蜷医€√が繝悶ず繧ァ繧ッ繝� O 縺翫h縺ウ Q 繧り�蜍慕噪縺ォ邨仙粋縺吶k縲�

NOTE 莠偵>縺ォ邨仙粋縺励◆ 2 縺、莉・荳翫�繧ェ繝悶ず繧ァ繧ッ繝医�縲√◎繧後i縺檎焚縺ェ繧句�驛ィ繝励Ο繝代ユ繧」繧呈戟縺」縺ヲ縺�k縺九b縺励l縺ェ縺�せ繧帝勁縺�※縲∽コ句ョ滉ク雁愛蛻・縺ァ縺阪↑縺�€よ悽莉墓ァ倥↓縺翫>縺ヲ逡ー縺ェ縺」縺ヲ繧ゅh縺�h縺�↑蜀�Κ繝励Ο繝代ユ繧」縺薙◎縺� [[Scope]] 縺ァ縺ゅk縲らオ仙粋縺輔l縺溘が繝悶ず繧ァ繧ッ繝医�縲∵ュ」遒コ縺ェ莉墓ァ俶橿陦鍋畑縺ョ驕灘�縺ィ縺励※縺薙�讓呎コ悶�荳ュ縺ァ菴ソ逕ィ縺輔l繧九€ゅ◎繧後�縲∝ョ滄圀縺ョ Function 繧ェ繝悶ず繧ァ繧ッ繝医�螳溯」�ウ輔�繧ャ繧、繝峨Λ繧、繝ウ縺ォ菴ソ逕ィ縺輔l繧九%縺ィ繧呈э蝗ウ縺励↑縺�€ゅb縺」縺ィ險€縺医�縲∝ョ滄圀縺ォ螳溯」��縲�2 縺、莉・荳翫�邨仙粋縺輔l縺� Function 繧ェ繝悶ず繧ァ繧ッ繝医� [[Scope]] 繝励Ο繝代ユ繧」縺ョ蟾ョ縺悟、夜Κ逧�↓隕ウ貂ャ縺輔l縺壹€√◎縺ョ蝣エ蜷育オ仙粋縺輔l縺� Function 繧ェ繝悶ず繧ァ繧ッ繝医�邨�r菴懊i縺壹↓蜷後§ Function 繧ェ繝悶ず繧ァ繧ッ繝医r蜀堺スソ逕ィ縺吶k縺ィ縺�≧譎ゅr讀懃衍縺吶k縺九b縺励l縺ェ縺�€ゅ%縺ョ讓呎コ悶�蜊倥↓ ECMAScript 繝励Ο繧ー繝ゥ繝�縺ォ縺ソ繧峨l繧区険繧玖�縺��莉墓ァ倥〒縺ゅk縺ョ縺ァ縲√%繧後�蜷域ウ慕噪縺ェ譛€驕ゥ蛹悶〒縺ゅk縲�

13.2 Function 繧ェ繝悶ず繧ァ繧ッ繝医�逕滓� (Creating Function Objects)

FormalParameterList 縺ァ謖�ョ壹&繧後k驕ク謚樒噪縺ェ繝代Λ繝。繝シ繧ソ縺ョ繝ェ繧ケ繝医€:unctionBody 縺ァ謖�ョ壹&繧後k譛ャ譁�€ヾcope 縺ァ謖�ョ壹&繧後k繧ケ繧ウ繝シ繝鈴€」骼悶r荳弱∴繧峨l縲:unction 繧ェ繝悶ず繧ァ繧ッ繝医�谺。縺ョ繧医≧縺ォ逕滓�縺輔l繧�:

  1. 縺薙�繧サ繧ッ繧キ繝ァ繝ウ縺ョ繧「繝ォ繧エ繝ェ繧コ繝�縺ョ縺薙l縺セ縺ァ縺ョ蜻シ縺ウ蜃コ縺励〒逕滓�縺輔l繧九が繝悶ず繧ァ繧ッ繝� E 縺後☆縺ァ縺ォ蟄伜惠縺励※縺�k蝣エ蜷医€√◎縺励※縺昴�縲√%縺ョ繧サ繧ッ繧キ繝ァ繝ウ縺ョ繧「繝ォ繧エ繝ェ繧コ繝�縺ョ蜻シ縺ウ蜃コ縺励′縲∽サ雁屓荳弱∴繧峨l縺� FunctionBody 縺ィ遲峨@縺� FunctionBody 繧剃ク弱∴繧峨l縺溷�エ蜷医�縲√せ繝�ャ繝� 13 縺ク縲�(縺薙l繧峨�蛻、螳壼渕貅悶r貅€縺溘☆荳€縺、莉・荳翫�繧ェ繝悶ず繧ァ繧ッ繝� E 縺悟ュ伜惠縺吶k縺ェ繧峨�縲∝ョ溯」��陬�㍼縺ョ荳€縺、繧帝∈謚槭☆繧�)
  2. 譁ー縺励> ECMAScript 繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺励€� F 繧偵◎縺ョ繧ェ繝悶ず繧ァ繧ッ繝医→縺吶k縲�
  3. F 縺ョ [[Class]] 繝励Ο繝代ユ繧」繧� "Function" 縺ォ險ュ螳壹☆繧九€�
  4. F 縺ョ [[Prototype]] 繝励Ο繝代ユ繧」繧偵€�繧サ繧ッ繧キ繝ァ繝ウ 15.3.3.1 縺ォ螳夂セゥ縺吶k縲√が繝ェ繧ク繝翫Ν縺ョ Function prototype 繧ェ繝悶ず繧ァ繧ッ繝医↓險ュ螳壹☆繧九€�
  5. F 縺ョ [[Call]] 繝励Ο繝代ユ繧」繧偵€�繧サ繧ッ繧キ繝ァ繝ウ 13.2.1 縺ォ霑ー縺ケ繧九h縺�↓險ュ螳壹☆繧九€�
  6. F 縺ョ [[Construct]] 繝励Ο繝代ユ繧」繧偵€�繧サ繧ッ繧キ繝ァ繝ウ 13.2.2 縺ォ霑ー縺ケ繧九h縺�↓險ュ螳壹☆繧九€�
  7. F 縺ョ [[Scope]] 繝励Ο繝代ユ繧」繧偵€� Scope 縺ィ蜷後§繧ェ繝悶ず繧ァ繧ッ繝医〒讒区�縺輔l繧区眠縺励>繧ケ繧ウ繝シ繝鈴€」骼�(10.1.4) 縺ォ險ュ螳壹☆繧九€�
  8. F 縺ョ length 繝励Ο繝代ユ繧」繧偵€:ormalParameterList 縺ォ謖�ョ壹&繧後k蠖「蠑冗噪繝励Ο繝代ユ繧」縺ョ謨ー縺ォ險ュ螳壹☆繧九€ゅヱ繝ゥ繝。繝シ繧ソ縺梧欠螳壹&繧後↑縺代l縺ー縲: 縺ョ length 繝励Ο繝代ユ繧」繧� 0 縺ォ險ュ螳壹☆繧九€ゅ%縺ョ繝励Ο繝代ユ繧」縺ッ縲�繧サ繧ッ繧キ繝ァ繝ウ 15.3.5.1 縺ォ螳夂セゥ縺輔l繧句ア樊€ァ繧剃ク弱∴繧峨l繧九€�
  9. 蠑� new Object() 縺ォ繧医j逕滓�縺輔l繧九°縺ョ繧医≧縺ォ縲∵眠縺励>繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺吶k縲�
  10. Result(9) 縺ョ constructor 繝励Ο繝代ユ繧」繧� F 縺ォ險ュ螳壹☆繧九€ゅ%縺ョ繝励Ο繝代ユ繧」縺ッ 螻樊€ァ { DontEnum } 繧剃ク弱∴繧峨l繧九€�
  11. F 縺ョ prototype 繝励Ο繝代ユ繧」繧� Result(9) 縺ォ險ュ螳壹☆繧九€ゅ%縺ョ繝励Ο繝代ユ繧」縺ッ縲�繧サ繧ッ繧キ繝ァ繝ウ 15.3.5.2 縺ァ螳夂セゥ縺輔l繧句ア樊€ァ繧剃ク弱∴繧峨l繧九€�
  12. F 繧定ソ斐☆縲�
  13. 螳溯」��陬�㍼縺ァ縲√せ繝�ャ繝� 2 縺セ縺溘�繧ケ繝�ャ繝� 14 縺ク縲�
  14. E 縺ォ騾」邨舌&繧後k縲∵眠縺励> Native ECMAScript 繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺励€: 繧偵◎縺ョ繧ェ繝悶ず繧ァ繧ッ繝医→縺吶k縲ょ�縺ヲ縺ョ髱槫�驛ィ繝励Ο繝代ユ繧」縺� E 縺ィ F 縺ァ荳€閾エ縺吶k繧医≧縺ォ縲∝�縺ヲ縺ョ髱槫�驛ィ繝励Ο繝代ユ繧」縺ィ縺昴�螻樊€ァ繧� E 縺九i F 縺ク隍��縺吶k縲�
  15. F 縺ョ [[Class]] 繝励Ο繝代ユ繧」繧� "Function" 縺ォ險ュ螳壹☆繧九€�
  16. F 縺ョ [[Prototype]] 繝励Ο繝代ユ繧」繧偵€�繧サ繧ッ繧キ繝ァ繝ウ 15.3.3.1 縺ァ螳夂セゥ縺吶k繧ェ繝ェ繧ク繝翫Ν縺ョ Function prototype 繧ェ繝悶ず繧ァ繧ッ繝医↓險ュ螳壹☆繧九€�
  17. F 縺ョ [[Call]] 繝励Ο繝代ユ繧」繧偵€�繧サ繧ッ繧キ繝ァ繝ウ 13.2.1 縺ァ霑ー縺ケ繧九h縺�↓險ュ螳壹☆繧九€�
  18. F 縺ョ [[Construct]] 繝励Ο繝代ユ繧」繧偵€�繧サ繧ッ繧キ繝ァ繝ウ 13.2.2 縺ァ霑ー縺ケ繧九h縺�↓險ュ螳壹☆繧九€�
  19. F 縺ョ [[Scope]] 繝励Ο繝代ユ繧」繧偵€ヾcope 縺ィ蜷後§繧ェ繝悶ず繧ァ繧ッ繝医〒讒区�縺輔l繧九�譁ー縺励>繧ケ繧ウ繝シ繝鈴€」骼�(10.1.4) 縺ォ險ュ螳壹☆繧九€�
  20. F 繧定ソ斐☆縲�

NOTE prototype 繝励Ο繝代ユ繧」縺ッ縲∝推髢「謨ー縺ォ閾ェ蜍慕噪縺ォ逕滓�縺輔l縲�未謨ー縺後さ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ィ縺励※蛻ゥ逕ィ縺輔l繧句庄閭ス諤ァ繧定ィア蜿ッ縺吶k縲�

繧ケ繝�ャ繝� 1 縺ッ螳溯」�↓縲。 縺� A 縺ォ萓晏ュ倥@縺ェ縺�→縺薙m縺ョ蜈・繧悟ュ舌�髢「謨ー B 繧呈戟縺、髢「謨ー A 縺ョ荳€闊ャ逧�↑繧ア繝シ繧ケ縺ョ譛€驕ゥ蛹悶r險ア蜿ッ縺吶k縲ゅ%縺ョ繧ア繝シ繧ケ縺ァ縺ッ螳溯」�� B 縺ョ縺溘a縺ォ A 縺悟他蜃コ縺輔l繧句コヲ縺ォ豈主屓譁ー縺励>繧ゅ�繧堤函謌舌☆繧倶サ」繧上j縺ォ蜷後§繧ェ繝悶ず繧ァ繧ッ繝医�蜀榊茜逕ィ繧定ィア蜿ッ縺輔l繧九€ゅせ繝�ャ繝� 13 縺ッ縺薙�譛€驕ゥ蛹悶r驕ク謚樒噪縺ォ縺吶k; 縺薙l繧貞ョ溯」�@縺ェ縺�%縺ィ繧帝∈謚槭☆繧句ョ溯」��縲√せ繝�ャ繝� 2 縺ォ騾イ繧€縲�

萓九∴縺ー縲√%縺ョ繧ウ繝シ繝�:

function A() {
  function B(x) {return x*x;}
  return B;
}

function C() {
  return eval("(function (x) {return x*x;})");
}

var b1 = A();
var b2 = A();
function  b3(x) {return x*x;}
function  b4(x) {return x*x;}
var b5 = C();
var b6 = C();

縺ョ荳ュ縺ァ縲∝ョ溯」��縲|1 縺ィ b2 縺ョ邨仙粋繧定ィア蜿ッ縺輔l繧九€ゅ□縺瑚ヲ∵アゅ�縺輔l縺ェ縺�€ょョ滄圀縲√◎繧後i縺ョ [[Scope]] 繝励Ο繝代ユ繧」髢薙�驕輔>繧呈、懃衍縺吶k譁ケ豕輔′縺ェ縺��縺ァ縲|1 縺ィ b2 繧貞酔縺倥が繝悶ず繧ァ繧ッ繝医↓菴懈�縺励※繧ゅh縺�€ゆク€譁ケ縲∝ョ溯」��繧ス繝シ繧ケ繧ウ繝シ繝峨�遲峨@縺上↑縺�(13.1.1) b3 縺ィ b4 繧堤オ仙粋縺励※縺ッ縺ェ繧峨↑縺�€ゅ∪縺溷ョ溯」��縲�2 縺、縺ョ逡ー縺ェ繧� eval 蜻シ縺ウ蜃コ縺励〒逕滓�縺輔l繧九◆繧√↓繧ス繝シ繧ケ繧ウ繝シ繝峨�遲峨@縺上↑縺� b5 縺ィ b6 繧らオ仙粋縺励※縺ッ縺ェ繧峨↑縺�€�

螳滄圀縲√◎繧後�縲√◎繧後i縺ョ [[Scope]] 繝励Ο繝代ユ繧」髢薙↓驕輔>縺瑚ヲ九i繧後↑縺�%縺ィ繧貞ョ溯」�′險シ譏弱〒縺阪€√◎繧後〒 1 縺、縺ョ繧ェ繝悶ず繧ァ繧ッ繝医r蜀堺スソ逕ィ縺ァ縺阪k譎ゅ↓縺ョ縺ソ縲�2 縺、縺ョ Function 繧ェ繝悶ず繧ァ繧ッ繝医�邨仙粋縺ォ逕溽肇逧�□繧阪≧縲ゅ%縺ョ繝昴Μ繧キ繝シ縺ォ蠕薙≧縺薙→縺ォ繧医▲縺ヲ縲∝ョ溯」��縲√◎繧瑚�菴薙↓邨仙粋縺励※縺�k繧ェ繝悶ず繧ァ繧ッ繝医�遨コ陌壹↑繧ア繝シ繧ケ縺ォ驕ュ驕�☆繧九□縺代↓縺ェ繧九€�

13.2.1 [[Call]]

Function 繧ェ繝悶ず繧ァ繧ッ繝� F 縺ョ [[Call]] 繝励Ο繝代ユ繧」縺悟他蜃コ縺輔l繧九→縺阪€∵ャ。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. F 縺ョ FormalParameterList 繧堤畑縺�k縲∵眠縺励>螳溯。後さ繝ウ繝�く繧ケ繝医r險ュ鄂ョ縺励€∝シ墓焚繝ェ繧ケ繝医→繧サ繧ッ繧キ繝ァ繝ウ 10.2.3 縺ァ霑ー縺ケ繧� this 蛟、繧呈ク。縺吶€�
  2. F 縺ョ FunctionBody 繧定ゥ穂セ。縺吶k縲�
  3. 蜑阪�螳溯。後さ繝ウ繝�く繧ケ繝医r蝗槫セゥ縺励€√せ繝�ャ繝� 1 縺ァ險ュ鄂ョ縺励◆螳溯。後さ繝ウ繝�く繧ケ繝医r蜃コ繧九€�
  4. Result(2).type 縺� throw 縺ェ繧峨�縲ヽesult(2).value 繧呈兜縺偵k縲�
  5. Result(2).type 縺� 縺ェ繧峨�縲ヽesult(2) 繧定ソ斐☆縲Walue 繧定ソ斐☆縲�
  6. (Result(2).type must be normal.) undefined 繧定ソ斐☆縲�

13.2.2 [[Construct]]

Function 繧ェ繝悶ず繧ァ繧ッ繝� F 縺ョ [[Construct]] 繝励Ο繝代ユ繧」縺悟他蜃コ縺輔l繧九→縺阪€∵ャ。縺ョ繧ケ繝�ャ繝励′蜿悶i繧後k:

  1. 譁ー縺励> Native ECMAScript 繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺吶k縲�
  2. Result(1) 縺ョ [[Class]] 繝励Ο繝代ユ繧」繧� "Object" 縺ォ險ュ螳壹☆繧九€�
  3. F 縺ョ prototype 繝励Ο繝代ユ繧」縺ョ蛟、繧貞叙蠕励☆繧九€�
  4. Result(3) 縺後が繝悶ず繧ァ繧ッ繝医↑繧峨�縲ヽesult(1) 縺ョ [[Prototype]] 繝励Ο繝代ユ繧」繧� Result(3) 縺ォ險ュ螳壹☆繧九€�
  5. Result(3) 縺後が繝悶ず繧ァ繧ッ繝医〒縺ェ縺代l縺ー縲ヽesult(1) 縺ョ [[Prototype]] 繝励Ο繝代ユ繧」繧偵€�繧サ繧ッ繧キ繝ァ繝ウ 15.2.3.1 縺ァ霑ー縺ケ繧九が繝ェ繧ク繝翫Ν縺ョ Object prototype 繧ェ繝悶ず繧ァ繧ッ繝医↓險ュ螳壹☆繧九€�
  6. F 縺ョ [[Call]] 繝励Ο繝代ユ繧」繧貞他縺ウ蜃コ縺吶€3esult(1) 繧� this 蛟、縺ィ縺励※謠蝉セ帙@縲∝シ墓焚蛟、縺ィ縺励※ [[Construct]] 縺ォ貂。縺輔l縺溷シ墓焚繝ェ繧ケ繝医r謠蝉セ帙☆繧九€�
  7. Type(Result(6)) 縺� Object 縺ェ繧峨�縲ヽesult(6) 繧定ソ斐☆縲�
  8. Result(1) 繧定ソ斐☆縲�

Page Contents

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