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

11 蠑� (Expressions)

11.1 蝓コ譛ャ蠑� (Primary Expressions)

Syntax
PrimaryExpression :
this
Identifier
Literal
ArrayLiteral
ObjectLiteral
( Expression )

11.1.1 this 繧ュ繝シ繝ッ繝シ繝� (this Keyword)

this 繧ュ繝シ繝ッ繝シ繝峨�螳溯。後さ繝ウ繝�く繧ケ繝医� this 蛟、繧定ゥ穂セ。縺吶k縲�

11.1.2 隴伜挨蟄仙盾辣ァ (Identifier Reference)

隴伜挨蟄舌�縲�繧サ繧ッ繧キ繝ァ繝ウ 10.1.4 縺ァ霑ー縺ケ縺溘せ繧ウ繝シ繝苓ヲ丞援繧剃スソ逕ィ縺励※隧穂セ。縺輔l繧九€ゅ%縺ョ隴伜挨蟄占ゥ穂セ。縺ョ邨先棡縺ッ蟶ク縺ォ Reference 蝙九�蛟、縺ァ縺ゅk縲�

11.1.3 繝ェ繝�Λ繝ォ蜿ら� (Literal Reference)

繝ェ繝�Λ繝ォ縺ッ繧サ繧ッ繧キ繝ァ繝ウ 7.8 縺ォ霑ー縺ケ繧九h縺�↓隧穂セ。縺輔l繧九€�

11.1.4 Array 蛻晄悄蛹門ュ� (Array Initialiser)

Array 蛻晄悄蛹門ュ舌�縲� Array 繧ェ繝悶ず繧ァ繧ッ繝医�蛻晄悄蛹悶r險倩ソー縺吶k蠑上〒縲√Μ繝�Λ繝ォ蠖「蠑上〒譖ク縺九l繧九€ゅ◎繧後�驟榊�隕∫エ�繧偵≠繧峨o縺� 0 蛟倶サ・荳翫�蠑上�繝ェ繧ケ繝医〒縲√◎繧後◇繧瑚ァ呈峡蠑ァ "[ ]" 縺ァ蝗イ縺セ繧後k縲りヲ∫エ�縺ッ繝ェ繝�Λ繝ォ縺ァ縺ゅk蠢�ヲ√�縺ェ縺�; 縺昴l繧峨� Array 蛻晄悄蛹門ュ舌′隧穂セ。縺輔l繧句コヲ縺ォ隧穂セ。縺輔l繧九€�

驟榊�隕∫エ�縺ッ隕∫エ�繝ェ繧ケ繝医�髢句ァ九€∽クュ髢薙€∵忰蟆セ縺ァ逵∫払繧ゅ〒縺阪k縲りヲ∫エ�繝ェ繧ケ繝井クュ縺ァ AssignmentExpression 縺ョ蜈郁。後@縺ェ縺�き繝ウ繝槭�縲∵ャ�縺代◆驟榊�隕∫エ�縺� Array 縺ョ髟キ縺輔↓蟇�ク弱@縲∫カ壹¥隕∫エ�縺ョ繧、繝ウ繝�ャ繧ッ繧ケ繧貞「怜刈縺輔○繧九€ら怐逡・縺輔l縺滄�蛻苓ヲ∫エ�縺ッ螳夂セゥ縺輔l縺ェ縺�€�

Syntax
ArrayLiteral :
[ Elisionopt ]
[ ElementList ]
[ ElementList , Elisionopt ]
ElementList :
Elisionopt AssignmentExpression
ElementList , Elisionopt AssignmentExpression
Elision :
,
Elision ,
Semantics

逕滓�隕丞援 ArrayLiteral : [ Elisionopt ] 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. 蠑� new Array() 縺ィ蜷梧ァ倥↓縲∵眠隕上↓驟榊�繧堤函謌舌☆繧九€�
  2. Elision 繧定ゥ穂セ。; 蟄伜惠縺励↑縺代l縺ー縲∵焚蛟、 0 繧堤畑縺�k縲�
  3. Result(1) 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ Result(2) 縺ァ蜻シ蜃コ縺吶€�
  4. Result(1) 繧定ソ斐☆縲�

逕滓�隕丞援 ArrayLiteral : [ ElementList ] 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

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

逕滓�隕丞援 ArrayLiteral : [ ElementList , Elisionopt ] 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. ElementList 繧定ゥ穂セ。縲�
  2. Elision 繧定ゥ穂セ。; 蟄伜惠縺励↑縺代l縺ー縲∵焚蛟、 0 繧堤畑縺�k縲�
  3. Result(1) 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  4. Result(1) 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ィ (Result(2)+Result(3)) 縺ァ蜻シ蜃コ縺吶€�
  5. Result(1) 繧定ソ斐☆縲�

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

  1. 蠑� new Array() 縺ィ蜷梧ァ倥↓縲∵眠隕上↓驟榊�繧堤函謌舌☆繧九€�
  2. Elision 繧定ゥ穂セ。; 蟄伜惠縺励↑縺代l縺ー縲∵焚蛟、 0 繧堤畑縺�k縲�
  3. AssignmentExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. Result(1) 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(2) 縺ィ Result(4) 縺ァ蜻シ蜃コ縺吶€�
  6. Result(1) 繧定ソ斐☆縲�

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

  1. ElementList 繧定ゥ穂セ。縲�
  2. Elision 繧定ゥ穂セ。; 蟄伜惠縺励↑縺代l縺ー縲∵焚蛟、 0 繧堤畑縺�k縲�
  3. AssignmentExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. Result(1) 縺ョ [[Get]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 "length" 縺ァ蜻シ蜃コ縺吶€�
  6. Result(1) 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 (Result(2)+Result(5)) 縺ィ Result(4) 縺ァ蜻シ蜃コ縺吶€�
  7. Result(1) 繧定ソ斐☆縲�

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

  1. 謨ー蛟、 1 繧定ソ斐☆縲�

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

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

11.1.5 繧ェ繝悶ず繧ァ繧ッ繝亥�譛溷喧蟄� (Object Initialiser)

繧ェ繝悶ず繧ァ繧ッ繝亥�譛溷喧蟄舌� Object 縺ョ蛻晄悄蛹悶r險倩ソー縺吶k蠑上〒縺ゅj縲√Μ繝�Λ繝ォ縺ョ繧医≧縺ェ蠖「蠑上〒譖ク縺九l繧九€ゅ�繝ュ繝代ユ繧」蜷阪→縺昴�蛟、縺ョ 0 蛟倶サ・荳翫�邨��繝ェ繧ケ繝医r { } 縺ァ蝗イ繧€縲ょ€、縺ッ繝ェ繝�Λ繝ォ縺ァ縺ゅk蠢�ヲ√�縺ェ縺�; 繧ェ繝悶ず繧ァ繧ッ繝亥�譛溷喧蟄舌′隧穂セ。縺輔l繧句コヲ縺ォ縲√◎繧後�隧穂セ。縺輔l繧九€�

Syntax
ObjectLiteral :
{ }
{ PropertyNameAndValueList }
PropertyNameAndValueList :
PropertyName : AssignmentExpression
PropertyNameAndValueList , PropertyName : AssignmentExpression
PropertyName :
Identifier
StringLiteral
NumericLiteral
Semantics

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

  1. 蠑� new Object() 縺ィ蜷梧ァ倥↓譁ー隕上↓繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺吶k縲�
  2. Result(1) 繧定ソ斐☆縲�

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

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

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

  1. 蠑� new Object() 縺ィ蜷梧ァ倥↓譁ー隕上↓繧ェ繝悶ず繧ァ繧ッ繝医r逕滓�縺吶k縲�
  2. PropertyName 繧定ゥ穂セ。縲�
  3. AssignmentExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. Result(1) 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(2) 縺ィ Result(4) 縺ァ蜻シ蜃コ縺吶€�
  6. Result(1) 繧定ソ斐☆縲�

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

  1. PropertyNameAndValueList 繧定ゥ穂セ。縲�
  2. PropertyName 繧定ゥ穂セ。縲�
  3. AssignmentExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. Result(1) 縺ョ [[Put]] 繝。繧ス繝�ラ繧偵€∝シ墓焚 Result(2) 縺ィ Result(4) 縺ァ蜻シ蜃コ縺吶€�
  6. Result(1) 繧定ソ斐☆縲�

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

  1. Identifier 縺ィ蜷後§譁�ュ励す繝シ繧ア繝ウ繧ケ縺ァ讒区�縺輔l繧区枚蟄怜�繝ェ繝�Λ繝ォ繧貞ス「謌舌☆繧九€�
  2. Result(1) 繧定ソ斐☆縲�

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

  1. StringLiteral 縺ョ蛟、繧定ソ斐☆縲�

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

  1. NumericLiteral 縺ョ蛟、繧貞ス「謌舌☆繧九€�
  2. ToString(Result(1)) 繧定ソ斐☆縲�

11.1.6 繧ー繝ォ繝シ繝怜喧貍皮ョ怜ュ� (The Grouping Operator)

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

  1. Expression 繧定ゥ穂セ。縲ゅ%繧後� Reference 蝙九〒繧ゅh縺�€�
  2. Result(1) 繧定ソ斐☆縲�

NOTE 縺薙�繧「繝ォ繧エ繝ェ繧コ繝�縺ッ縲� Result(1) 縺ォ GetValue 繧帝←逕ィ縺励↑縺�€� delete 繧� typeof 縺ョ繧医≧縺ェ貍皮ョ怜ュ舌↓諡ャ蠑ァ縺ョ縺、縺�◆蠑上r驕ゥ逕ィ縺ァ縺阪k繧医≧縺ォ縺吶k縺薙→縺後%繧後↓縺、縺�※縺ョ荳サ縺ェ蜍墓ゥ溘〒縺ゅk縲�

11.2 蟾ヲ霎コ蠑� (Left-Hand-Side Expressions)

11.2.1 繝励Ο繝代ユ繧」繧「繧ッ繧サ繧ケ貍皮ョ怜ュ� (Property Accessors)

繝峨ャ繝郁ィ俶ウ輔r逕ィ縺�※縲√�繝ュ繝代ユ繧」縺ッ蜷榊燕縺ォ繧医j繧「繧ッ繧サ繧ケ縺輔l繧�:

MemberExpression . Identifier
CallExpression . Identifier

縺セ縺溘�諡ャ蠑ァ險俶ウ輔〒:

MemberExpression [ Expression ]
CallExpression [ Expression ]

繝峨ャ繝郁ィ俶ウ輔�谺。縺ョ讒区枚逧�、画鋤縺ァ隱ャ譏弱&繧後k:

MemberExpression . Identifier

縺ョ謖ッ繧玖�縺��谺。縺ィ蜷檎ュ峨〒縺ゅk縲�

MemberExpression [ <identifier-string> ]

蜷梧ァ倥↓

CallExpression . Identifier

縺ョ謖ッ繧玖�縺��谺。縺ィ蜷檎ュ峨〒縺ゅk縲�

CallExpression [ <identifier-string> ]

<identifier-string> 縺ョ縺ィ縺薙m縺ッ Identifier 縺ィ縺励※蜷後§譁�ュ励す繝シ繧ア繝ウ繧ケ繧呈ァ区�縺吶k譁�ュ怜�繝ェ繝�Λ繝ォ縺ァ縺ゅk縲�

逕滓�隕丞援 MemberExpression : MemberExpression [ Expression ] 縺ッ谺。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. MemberExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. Expression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. ToObject(Result(2)) 繧貞他蜃コ縺吶€�
  6. ToString(Result(4)) 繧貞他蜃コ縺吶€�
  7. 蝓コ貅悶が繝悶ず繧ァ繧ッ繝医′ Result(5) 縺ァ繝励Ο繝代ユ繧」蜷阪′ Result(6) 縺ァ縺ゅk Reference 蝙九�蛟、繧定ソ斐☆縲�

逕滓�隕丞援 CallExpression : CallExpression [ Expression ] 縺ッ蜈ィ縺丞酔縺俶婿豕輔〒隧穂セ。縺輔l繧九′縲√せ繝�ャ繝� 1 縺ァ縺ッ CallExpression 縺瑚ゥ穂セ。縺輔l繧九€�

11.2.2 new 貍皮ョ怜ュ� (The new Operator)

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

  1. NewExpression 繧定ゥ穂セ。縺吶k縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. Type(Result(2)) 縺� Object 縺ァ縺ェ縺代l縺ー縲∽セ句、� TypeError 繧呈兜縺偵k縲�
  4. Result(2) 縺悟�驛ィ [[Construct]] 繝。繧ス繝�ラ繧貞ョ溯」�@縺ェ縺代l縺ー縲∽セ句、� TypeError 繧呈兜縺偵k縲�
  5. 蠑墓焚縺ェ縺励〒 Result(2) 縺ョ [[Construct]] 繝。繧ス繝�ラ繧貞他蜃コ縺吶€�(蠑墓焚蛟、縺ォ遨コ繝ェ繧ケ繝医r謠蝉セ帙☆繧九€�)
  6. Result(5) 繧定ソ斐☆縲�

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

  1. MenberExpression 繧定ゥ穂セ。縺吶k縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. 蜀�Κ縺ォ蠑墓焚蛟、繝ェ繧ケ繝医r謖√▽ Arguments 繧定ゥ穂セ。縺吶k縲�
  4. Type(Result(2)) 縺� Object 縺ァ縺ェ縺代l縺ー縲∽セ句、� TypeError 繧呈兜縺偵k縲�
  5. Result(2) 縺悟�驛ィ [[Construct]] 繝。繧ス繝�ラ繧貞ョ溯」�@縺ェ縺代l縺ー縲∽セ句、� TypeError 繧呈兜縺偵k縲�
  6. Result(2) 縺ョ [[Construct]] 繝。繧ス繝�ラ繧貞他縺ウ縲∝シ墓焚蛟、縺ォ繝ェ繧ケ繝� Result(3) 繧呈署萓帙☆繧九€�
  7. Result(6) 繧定ソ斐☆縲�

11.2.3 髢「謨ー蜻シ蜃コ縺� (Function Calls)

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

  1. MemberExpression 繧定ゥ穂セ。縲�
  2. Arguments 繧定ゥ穂セ。縺励€∝シ墓焚蛟、縺ョ蜀�Κ List 繧堤函謌舌☆繧九€�(繧サ繧ッ繧キ繝ァ繝ウ 11.2.4)縲�
  3. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  4. Type(Result(3)) 縺� Object 縺ァ縺ェ縺代l縺ー縲∽セ句、� TypeError 繧呈兜縺偵k縲�
  5. Result(3) 縺悟�驛ィ [[Call]] 繝。繧ス繝�ラ繧貞ョ溯」�@縺ェ縺代l縺ー縲∽セ句、� TypeError 繧呈兜縺偵k縲�
  6. Type(Result(1)) 縺� Reference 縺ェ繧峨�縲� Result(6) 縺ッ GetBase(Result(1)) 縲ゅ◎縺�〒縺ェ縺代l縺ー縲� Result(6) 縺ッ null 縲�
  7. Result(6) 縺� Activation 繧ェ繝悶ず繧ァ繧ッ繝医↑繧峨�縲� Result(7) 縺ッ null 縲ゅ◎縺�〒縺ェ縺代l縺ー縲� Result(7) 縺ッ Result(6) 縺ィ蜷後§縲�
  8. Result(3) 縺ョ [[Call]] 繝。繧ス繝�ラ繧貞他縺ウ縲》his 蛟、縺ォ Result(7) 縲∝シ墓焚蛟、縺ォ繝ェ繧ケ繝� Result(2) 繧呈ク。縺吶€�
  9. Result(8) 繧定ソ斐☆縲�

逕滓�隕丞援 CallExpression : CallExpression Arguments 縺ッ蜈ィ縺丞酔讒倥↓隧穂セ。縺輔l繧九′縲√せ繝�ャ繝� 1 縺ァ縺ッ CallExpression 縺瑚ゥ穂セ。縺輔l繧九€�

NOTE Result(3) 縺� Native ECMAScript 繧ェ繝悶ず繧ァ繧ッ繝医↑繧峨�縲� Result(8) 縺ッ縺代@縺ヲ Reference 蝙九↓縺ッ縺ェ繧峨↑縺�€� Host 繧ェ繝悶ず繧ァ繧ッ繝亥他縺ウ蜃コ縺励′ Reference 蝙九�蛟、繧定ソ斐☆縺九←縺�°縺ッ縲∝ョ溯」�セ晏ュ倥〒縺ゅk縲�

11.2.4 蠑墓焚繝ェ繧ケ繝� (Argument Lists)

蠑墓焚繝ェ繧ケ繝医�隧穂セ。縺ッ蛟、縺ォ繧医k蜀�Κ逧�Μ繧ケ繝� (繧サ繧ッ繧キ繝ァ繝ウ 8.8) 繧堤函謌舌☆繧九€�

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

  1. 蛟、縺ォ繧医k遨コ縺ョ蜀�Κ逧�Μ繧ケ繝医r霑斐☆縲�

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

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

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

  1. AssignmentExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. 蜚ッ荳€縺ョ鬆�岼縺� Result(2) 縺ァ縺ゅk蜀�Κ逧�Μ繧ケ繝医r霑斐☆縲�

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

  1. ArgumentList 繧定ゥ穂セ。縲�
  2. AssignmentExpression 繧定ゥ穂セ。縲�
  3. GetValue(Result(2)) 繧貞他蜃コ縺吶€�
  4. Result(1) 繧医j 1 螟ァ縺阪>髟キ縺輔€ヽesult(1) 縺ョ鬆�岼縺ョ譛ォ蟆セ縺ォ Result(3) 繧堤カ壹¢縺滄��岼繧呈戟縺、縲∵眠縺励>蜀�Κ逧�Μ繧ケ繝医r霑斐☆縲�

11.2.5 髢「謨ー蠑� (Function Expressions)

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

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

11.3 蠕檎スョ蠑� (Postfix Expressions)

Syntax
PostfixExpression :
LeftHandSideExpression
LeftHandSideExpression [LineTerminator 辟。縺余 ++
LeftHandSideExpression [LineTerminator 辟。縺余 --

11.3.1 蠕檎スョ蠅怜�貍皮ョ怜ュ� (Postfix Increment Operator)

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

  1. LeftHandSideExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToNumber(Result(2)) 繧貞他蜃コ縺吶€�
  4. + 貍皮ョ怜ュ舌→蜷後§隕丞援縺ァ (繧サ繧ッ繧キ繝ァ繝ウ 11.6.3)縲ヽesult(3) 縺ォ蛟、 1 繧貞刈縺医k縲�
  5. PutValue(Result(1), Result(4)) 繧貞他蜃コ縺吶€�
  6. Result(3) 繧定ソ斐☆縲�

11.3.2 蠕檎スョ貂帛�貍皮ョ怜ュ� (Postfix Decrement Operator)

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

  1. LeftHandSideExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToNumber(Result(2)) 繧貞他蜃コ縺吶€�
  4. - 貍皮ョ怜ュ舌→蜷後§隕丞援 (繧サ繧ッ繧キ繝ァ繝ウ 11.6.3) 縺ァ縲� Result(3) 縺九i蛟、 1 繧貞シ輔¥縲�
  5. PutValue(Result(1), Result(4)) 繧貞他蜃コ縺吶€�
  6. Result(3) 繧定ソ斐☆縲�

11.4 蜊倬��シ皮ョ怜ュ� (Unary Operators)

11.4.1 delete 貍皮ョ怜ュ� (The delete Operator)

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

  1. UnaryExpression 繧定ゥ穂セ。縲�
  2. Type(Result(1)) 縺� Reference 縺ァ縺ェ縺代l縺ー縲� true 繧定ソ斐☆縲�
  3. GetBase(Result(1)) 繧貞他蜃コ縺吶€�
  4. GetPropertyName(Result(1)) 繧貞他蜃コ縺吶€�
  5. Result(3) 縺ョ [[Delete]] 繝。繧ス繝�ラ繧貞他縺ウ縲∝炎髯、縺吶k繝励Ο繝代ユ繧」蜷阪→縺励※ Result(4) 繧呈ク。縺吶€�
  6. Result(5) 繧定ソ斐☆縲�

11.4.2 void 貍皮ョ怜ュ� (The void Operator)

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

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

11.4.3 typeof 貍皮ョ怜ュ� (The typeof Operator)

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

  1. UnaryExpression 繧定ゥ穂セ。縲�
  2. Type(Result(1)) 縺� Reference 縺ァ縺ェ縺代l縺ー縲� 繧ケ繝�ャ繝� 4 縺ク縲�
  3. GetBase(Result(1)) 縺� null 縺ェ繧峨�縲� "undefined" 繧定ソ斐☆縲�
  4. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  5. 谺。縺ョ陦ィ縺ォ縺励◆縺後▲縺ヲ縲� Type(Result(4)) 縺九i豎コ螳壹&繧後k譁�ュ怜�繧定ソ斐☆:
Type Result
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Object (native and doesn't implement [[Call]]) "object"
Object (native and implements [[Call]]) "function"
Object (host) Implementation-dependent

11.4.4 蜑咲スョ蠅怜�貍皮ョ怜ュ� (Prefix Increment Operator)

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

  1. UnaryExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToNumber(Result(2)) 繧貞他蜃コ縺吶€�
  4. + 貍皮ョ怜ュ舌→蜷後§隕丞援 (繧サ繧ッ繧キ繝ァ繝ウ 11.6.3) 縺ァ縲� Result(3) 縺ォ蛟、 1 繧貞刈縺医k縲�
  5. PutValue(Result(1), Result(4)) 繧貞他蜃コ縺吶€�
  6. Result(4) 繧定ソ斐☆縲�

11.4.5 蜑咲スョ貂帛�貍皮ョ怜ュ� (Prefix Decrement Operator)

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

  1. UnaryExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToNumber(Result(2)) 繧貞他蜃コ縺吶€�
  4. - 貍皮ョ怜ュ舌→蜷後§隕丞援 (繧サ繧ッ繧キ繝ァ繝ウ 11.6.3) 縺ァ縲� Result(3) 縺九i蛟、 1 繧貞シ輔¥縲�
  5. PutValue(Result(1), Result(4)) 繧貞他蜃コ縺吶€�
  6. Result(4) 繧定ソ斐☆縲�

11.4.6 蜊倬�� + 貍皮ョ怜ュ� (Unary + Operator)

蜊倬�� + 貍皮ョ怜ュ舌�鬆�r Number 蝙九↓螟画鋤縺吶k縲�

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

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

11.4.7 蜊倬�� - 貍皮ョ怜ュ� (Unary - Operator)

蜊倬�� - 貍皮ョ怜ュ舌�鬆�r Number 蝙九↓螟画鋤縺励€∝渚霆「縺吶k縲� +0 縺ョ蜷ヲ螳壹� -0縲� -0 縺ョ蜷ヲ螳壹� +0 繧堤函謌舌☆繧九%縺ィ縺ォ豕ィ諢上€�

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

  1. UnaryExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToNumber(Result(2)) 繧貞他蜃コ縺吶€�
  4. Result(3) 縺� NaN 縺ェ繧峨�縲� NaN 繧定ソ斐☆縲�
  5. Result(3) 縺ョ蜷ヲ螳�; 縺、縺セ繧翫€∝酔縺伜、ァ縺阪&縺ァ隨ヲ蜿キ縺碁€��謨ー繧堤ョ怜�縺吶k縲�
  6. Result(5) 繧定ソ斐☆縲�

11.4.8 繝薙ャ繝亥凄螳壽シ皮ョ怜ュ� (Bitwise NOT Operator) ( ~ )

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

  1. UnaryExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToInt32(Result(2)) 繧貞他蜃コ縺吶€�
  4. Result(3) 縺ォ繝薙ャ繝郁」懈焚繧帝←逕ィ縺吶k縲らオ先棡縺ッ隨ヲ蜿キ莉倥″ 32 繝薙ャ繝域紛謨ー縺ァ縺ゅk縲�
  5. Result(4) 繧定ソ斐☆縲�

11.4.9 隲也炊蜷ヲ螳壽シ皮ョ怜ュ� (Logical NOT Operator) ( ! )

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

  1. UnaryExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToBoolean(Result(2)) 繧貞他蜃コ縺吶€�
  4. Result(3) 縺� true 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  5. true 繧定ソ斐☆縲�

11.5 蜑ー髯、貍皮ョ怜ュ� (Multiplicative Operators)

Syntax
MultiplicativeExpression :
UnaryExpression
MultiplicativeExpression * UnaryExpression
MultiplicativeExpression / UnaryExpression
MultiplicativeExpression % UnaryExpression
Semantics

@ 繧剃ク翫↓螳夂セゥ縺輔l繧区シ皮ョ怜ュ舌�荳€縺、縺ィ縺励※縲∫函謌占ヲ丞援 MultiplicativeExpression : MultiplicativeExpression @ UnaryExpression 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. MultiplicativeExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. UnaryExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. ToNumber(Result(2)) 繧貞他蜃コ縺吶€�
  6. ToNumber(Result(4)) 繧貞他蜃コ縺吶€�
  7. Result(5) 縺ィ Result(6) 縺ォ縲∵欠螳壹&繧後◆貍皮ョ� (*, /, %) 繧帝←逕ィ縺吶k縲ゆク玖ィ倥�繝弱�繝� (繧サ繧ッ繧キ繝ァ繝ウ 11.5.1, 11.5.2, 11.5.3) 繧貞盾辣ァ縲�
  8. Result(7) 繧定ソ斐☆縲�

11.5.1 * 貍皮ョ怜ュ舌�驕ゥ逕ィ (Applying the * Operator)

  • 貍皮ョ怜ュ舌�荵礼ョ励r陦後>縲����遨阪r逕滓�縺吶k縲ゆケ礼ョ励�蜿ッ謠帷噪縺ァ縺ゅk縲よ怏髯先焚邊セ蠎ヲ? ( finite precision ) 縺ョ縺溘a縲� ECMAScript 縺ォ縺翫>縺ヲ縲∽ケ礼ョ励�蟶ク縺ォ邨仙粋逧�↑繧上¢縺ァ縺ッ縺ェ縺�€�

豬ョ蜍募ー乗焚轤ケ謨ー荵礼ョ励�邨先棡縺ッ縲� IEEE 754 蛟咲イセ蠎ヲ險育ョ苓ヲ丞援縺ォ繧医j豎コ螳壹&繧後k:

  • 縺ゥ縺。繧峨°縺ョ鬆�′ NaN 縺ェ繧峨�縲∫オ先棡縺ッ NaN 縺ァ縺ゅk縲�
  • 邨先棡縺ョ隨ヲ蜿キ縺ッ縲∽ク。譁ケ縺ョ鬆�′蜷後§隨ヲ蜿キ繧呈戟縺、縺ェ繧峨�豁」隨ヲ蜿キ縺ァ縺ゅj縲∫焚縺ェ繧狗ャヲ蜿キ繧呈戟縺、縺ェ繧峨�雋�隨ヲ蜿キ縺ァ縺ゅk縲�
  • 0 縺ォ繧医k辟。髯仙、ァ縺ョ荵礼ョ励�邨先棡縺ッ縲� NaN 縺ォ縺ェ繧九€�
  • 辟。髯仙、ァ縺ォ繧医k辟。髯仙、ァ縺ョ荵礼ョ励�邨先棡縺ッ縲� infinity 縺ァ縺ゅk縲らャヲ蜿キ縺ッ 荳翫↓縺ゅ£縺溯ヲ丞援縺ァ豎コ螳壹☆繧九€�
  • 0 莉・螟悶�譛蛾剞謨ー縺ォ繧医k辟。髯仙、ァ縺ョ荵礼ョ励�邨先棡縺ッ縲∫ャヲ蜿キ莉倥″辟。髯仙、ァ縺ァ縺ゅk縲らャヲ蜷医�荳翫↓縺ゅ¢縺溯ヲ丞援縺ァ豎コ螳壹☆繧九€�
  • 辟。髯仙、ァ縺ァ繧� 0 縺ァ繧� NaN 縺ァ繧ゅ↑縺�ョ九j縺ョ繧ア繝シ繧ケ縺ァ縺ッ縲∫ゥ阪′邂怜�縺輔l縲� IEEE 754 逶エ霑代∈縺ョ荳ク繧√Δ繝シ繝峨r菴ソ逕ィ縺励※縲∫峩霑代�陦ィ迴セ蜿ッ閭ス縺ェ蛟、縺ク荳ク繧√i繧後k縲ょ、ァ縺阪&縺瑚。ィ縺帙↑縺�⊇縺ゥ螟ァ縺阪>縺ェ繧峨�縲∵シ皮ョ励�繧ェ繝シ繝舌�繝輔Ο繝シ縺励€∫オ先棡縺ッ驕ゥ蛻�↑隨ヲ蜷医�辟。髯仙、ァ縺ィ縺ェ繧九€ょ、ァ縺阪&縺瑚。ィ縺帙↑縺�⊇縺ゥ蟆上&縺�i縺ー縲∵シ皮ョ励�繧「繝ウ繝€繝シ繝輔Ο繝シ縺礼オ先棡縺ッ驕ゥ蛻�↑隨ヲ蜷医� 0 縺ィ縺ェ繧九€� ECMAScript 險€隱槭�縲� IEEE 754 縺ォ螳夂セゥ縺輔l繧区ョオ髫守噪繧「繝ウ繝€繝シ繝輔Ο繝シ (gradual underflow) 縺ョ繧オ繝昴�繝医r蠢��医→縺吶k縲�

11.5.2 / 貍皮ョ怜ュ舌�驕ゥ逕ィ (Applying the / Operator)

/ 貍皮ョ怜ュ舌�荵礼ョ励r陦後>縲����蝠�r逕滓�縺吶k縲ょキヲ鬆�′陲ォ髯、謨ー縺ァ蜿ウ鬆�′髯、謨ー縺ァ縺ゅk縲� ECMAScript 縺ッ謨エ謨ー髯、邂励r陦後o縺ェ縺�€る��→髯、邂玲シ皮ョ礼オ先棡縺ョ蜈ィ縺ヲ縺ッ蛟咲イセ蠎ヲ豬ョ蜍募ー乗焚轤ケ謨ー縺ァ縺ゅk縲ゆケ礼ョ励�邨先棡縺ッ縲� IEEE 754 邂苓。楢ヲ丞ョ壹↓繧医j豎コ螳壹&繧後k:

  • 縺ゥ縺。繧峨°縺ョ鬆�′ NaN 縺ェ繧峨�縲∫オ先棡縺ッ NaN 縺ァ縺ゅk縲�
  • 邨先棡縺ョ隨ヲ蜿キ縺ッ縲∽ク。譁ケ縺ョ鬆�′蜷後§隨ヲ蜿キ繧呈戟縺、縺ェ繧峨�豁」隨ヲ蜿キ縺ァ縺ゅj縲∫焚縺ェ繧狗ャヲ蜿キ繧呈戟縺、縺ェ繧峨�雋�隨ヲ蜿キ縺ァ縺ゅk縲�
  • 辟。髯仙、ァ縺ョ辟。髯仙、ァ縺ォ繧医k髯、邂励�邨先棡縺ッ縲� NaN 縺ァ縺ゅk縲�
  • 辟。髯仙、ァ縺ョ 0 縺ォ繧医k髯、邂励�邨先棡縺ッ縲∫┌髯仙、ァ縺ォ縺ェ繧九€らャヲ蜿キ縺ッ 荳翫↓縺ゅ£縺溯ヲ丞援縺ァ豎コ螳壹☆繧九€�
  • 辟。髯仙、ァ縺ョ 0 莉・螟悶�譛蛾剞謨ー縺ォ繧医k髯、邂励�邨先棡縺ッ縲∫ャヲ蜿キ莉倥″辟。髯仙、ァ縺ァ縺ゅk縲らャヲ蜷医�荳翫↓縺ゅ¢縺溯ヲ丞援縺ァ豎コ螳壹☆繧九€�
  • 譛蛾剞謨ー縺ョ辟。髯仙、ァ縺ォ繧医k髯、邂励�邨先棡縺ッ縲� 0 縺ァ縺ゅk縲らャヲ蜷医�荳翫↓縺ゅ¢縺溯ヲ丞援縺ァ豎コ螳壹☆繧九€�
  • 0 縺ョ 0 縺ォ繧医k髯、邂励�邨先棡縺ッ縲� NaN 縺ァ縺ゅk; 0 縺ョ莉サ諢上�莉悶�譛蛾剞謨ー縺ォ繧医k髯、邂励�邨先棡縺ッ 0 縺ァ縺ゅk縲らャヲ蜷医�荳翫↓縺ゅ¢縺溯ヲ丞援縺ァ豎コ螳壹☆繧九€�
  • 0 莉・螟悶�譛蛾剞謨ー縺ョ 0 繧医k髯、邂励�邨先棡縺ッ縲∫ャヲ蜿キ莉倥″辟。髯仙、ァ縺ァ縺ゅk縲らャヲ蜷医�荳翫↓縺ゅ¢縺溯ヲ丞援縺ァ豎コ螳壹☆繧九€�
  • 辟。髯仙、ァ縺ァ繧� 0 縺ァ繧� NaN 縺ァ繧ゅ↑縺�ョ九j縺ョ繧ア繝シ繧ケ縺ァ縺ッ縲∝膚縺檎ョ怜�縺輔l縲� IEEE 754 逶エ霑代∈縺ョ荳ク繧√Δ繝シ繝峨r菴ソ逕ィ縺励※縲∫峩霑代�陦ィ迴セ蜿ッ閭ス縺ェ蛟、縺ク荳ク繧√i繧後k縲ょ、ァ縺阪&縺瑚。ィ縺帙↑縺�⊇縺ゥ螟ァ縺阪>縺ェ繧峨�縲∵シ皮ョ励�繧ェ繝シ繝舌�繝輔Ο繝シ縺礼オ先棡縺ッ驕ゥ蛻�↑隨ヲ蜷医�辟。髯仙、ァ縺ィ縺ェ繧九€ょ、ァ縺阪&縺瑚。ィ縺帙↑縺�⊇縺ゥ蟆上&縺�i縺ー縲∵シ皮ョ励�繧「繝ウ繝€繝シ繝輔Ο繝シ縺礼オ先棡縺ッ驕ゥ蛻�↑隨ヲ蜷医� 0 縺ィ縺ェ繧九€� ECMAScript 險€隱槭�縲� IEEE 754 縺ォ螳夂セゥ縺輔l繧区ョオ髫守噪繧「繝ウ繝€繝シ繝輔Ο繝シ (gradual underflow) 縺ョ繧オ繝昴�繝医r蠢��医→縺吶k縲�

11.5.3 % 貍皮ョ怜ュ舌�驕ゥ逕ィ (Applying the % Operator)

% 貍皮ョ怜ュ舌�縲∬ィ€螟悶�髯、邂励°繧蛾���蜑ー菴吶r邂怜�縺吶k; 蟾ヲ鬆�′陲ォ髯、謨ー縺ァ蜿ウ鬆�′髯、謨ー縺ァ縺ゅk縲�

NOTE C 縺翫h縺ウ C++ 縺ォ縺翫>縺ヲ縲∝臆菴呎シ皮ョ怜ュ舌�謨エ謨ー鬆��縺ソ繧貞女縺台サ倥¢繧�; ECMAScript 縺ォ縺翫>縺ヲ縺ッ縲∵オョ蜍募ー乗焚轤ケ謨ー鬆�b蜿励¢莉倥¢繧九€�

% 貍皮ョ怜ュ舌↓繧医j邂怜�縺輔l繧九h縺�↑豬ョ蜍募ー乗焚轤ケ謨ー縺ョ蜑ー菴呎シ皮ョ励�邨先棡縺ッ縲� IEEE 754 縺ァ螳夂セゥ縺輔l繧� "reminder" 貍皮ョ励→蜷梧ァ倥〒縺ッ縺ェ縺�€� IEEE 754 "remainder" 貍皮ョ励�縲∝�繧頑昏縺ヲ髯、邂� (truncating division) 縺九i縺ァ縺ッ縺ェ縺丈クク繧�勁邂� (rounding division) 縺九i蜑ー菴吶r邂怜�縺励€√@縺溘′縺」縺ヲ縺昴�謖ッ繧玖�縺��譛臥畑縺ェ謨エ謨ー蜑ー菴呎シ皮ョ怜ュ舌�縺昴l縺ィ縺ッ鬘樔シシ縺励↑縺�€ゆサ」繧上j縺ォ ECMAScript 險€隱槭� % 繧呈オョ蜍募ー乗焚轤ケ謨ー貍皮ョ嶺ク翫〒螳夂セゥ縺励€� Java 謨エ謨ー蜑ー菴呎シ皮ョ怜ュ舌�縺昴l縺ォ鬘樔シシ縺吶k譁ケ豕輔〒謖ッ繧玖�縺�; 縺薙l縺ッ C 繝ゥ繧、繝悶Λ繝ェ髢「謨ー fmod 縺ィ豈碑シ�&繧後k.

ECMAScript 豬ョ蜍募ー乗焚轤ケ謨ー蜑ー菴呎シ皮ョ励�邨先棡縺ッ縲� IEEE 邂苓。薙�隕丞援縺ァ豎コ螳壹&繧後k:

  • 縺ゥ縺。繧峨°縺ョ鬆�′ NaN 縺ェ繧峨�縲∫オ先棡縺ッ NaN 縺ァ縺ゅk縲�
  • 邨先棡縺ョ隨ヲ蜿キ縺ッ縲∬「ォ髯、謨ー縺ョ隨ヲ蜿キ縺ィ遲峨@縺�€�
  • 陲ォ髯、謨ー縺檎┌髯仙、ァ縲√∪縺溘�髯、謨ー縺� 0 縲� 縺ゅk縺��縺昴�荳。譁ケ縺ェ繧峨�縲� 邨先棡縺ッ NaN 縺ァ縺ゅk縲�
  • 陲ォ髯、謨ー縺梧怏髯先焚 縺九▽ 髯、謨ー縺檎┌髯仙、ァ縺ェ繧峨�縲∫オ先棡縺ッ陲ォ髯、謨ー縺ィ遲峨@縺�€�
  • 陲ォ髯、謨ー縺� 0 縺九▽ 髯、謨ー縺梧怏髯先焚縺ェ繧峨�縲∫オ先棡縺ッ陲ォ髯、謨ー縺ィ蜷後§縺ァ縺ゅk縲�
  • 辟。髯仙、ァ縺ァ繧� 0 縺ァ繧� NaN 縺ァ繧ゅ↑縺�ョ九j縺ョ繧ア繝シ繧ケ縺ァ縺ッ縲∬「ォ髯、謨ー n 縺ィ髯、謨ー d 縺九i豬ョ蜍募ー乗焚轤ケ謨ー縺ョ蜑ー菴� r 縺ッ縲∵焚蟄ヲ逧�未菫� r = n - ( d * q ) 縺ォ繧医▲縺ヲ螳夂セゥ縺輔l繧九€� q 縺ッ謨エ謨ー縺ァ n/d 縺瑚イ�縺ェ繧芽イ�縲∵ュ」縺ェ繧峨�豁」縺ァ縺ゅj縲∝、ァ縺阪&縺ッ n 縺ィ d 縺ョ逵溘�謨ー蟄ヲ逧�↑蝠��螟ァ縺阪&繧定カ�∴縺ェ縺�庄閭ス縺ェ髯舌j螟ァ縺阪>縲�

11.6 蜉�貂帶シ皮ョ怜ュ� (Additive Operators)

11.6.1 蜉�豕墓シ皮ョ怜ュ� (The Addition operator) ( + )

蜉�豕墓シ皮ョ怜ュ舌�縲∵枚蟄怜�縺ョ騾」邨舌€√∪縺溘�謨ー縺ョ蜉�豕輔�縺�★繧後°繧定。後≧縲�

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

  1. AdditiveExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. MultiplicativeExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. ToPrimitive(Result(2)) 繧貞他蜃コ縺吶€�
  6. ToPrimitive(Result(4)) 繧貞他蜃コ縺吶€�
  7. Type(Result(5)) 縺� String 縺セ縺溘� Type(Result(6)) 縺� String 縺ェ繧峨�縲� 繧ケ繝�ャ繝� 12 縺ク縲� (縺薙�繧ケ繝�ャ繝励�縲�未菫よシ皮ョ怜ュ舌�豈碑シ�い繝ォ繧エ繝ェ繧コ繝�縺ョ繧ケ繝�ャ繝� 3 縺ィ縺ッ逡ー縺ェ繧翫€� 縺九▽ 縺ァ縺ッ縺ェ縺� 縺セ縺溘� 縺ァ縺ゅk縺薙→縺ォ豕ィ諢上€�)
  8. ToNumber(Result(5)) 繧貞他蜃コ縺吶€�
  9. ToNumber(Result(6)) 繧貞他蜃コ縺吶€�
  10. Result(8) 縺ィ Result(9) 縺ォ縲∝刈豕墓シ皮ョ励r驕ゥ逕ィ縺吶k縲ゆク玖ィ倥ヮ繝シ繝亥盾辣ァ (繧サ繧ッ繧キ繝ァ繝ウ 11.6.3)縲�
  11. Result(10) 繧定ソ斐☆縲�
  12. ToString(Result(5)) 繧貞他蜃コ縺吶€�
  13. ToString(Result(6)) 繧貞他蜃コ縺吶€�
  14. Result(12) 縺ォ Result(13) 繧帝€」邨舌☆繧九€�
  15. Result(14) 繧定ソ斐☆縲�

NOTE 繧ケ繝�ャ繝� 5 縺ィ 6 縺ォ縺翫¢繧� ToPrimitive 蜻シ蜃コ縺励〒縺ッ繝偵Φ繝医r謠蝉セ帙@縺ェ縺�€ょ�繝阪う繝�ぅ繝� ECMAScript 繧ェ繝悶ず繧ァ繧ッ繝医� Date 繧ェ繝悶ず繧ァ繧ッ繝医r髯、縺阪€√ヲ繝ウ繝医�谺�螯ゅr繝偵Φ繝� Number 縺御ク弱∴繧峨l縺溘h縺�↓謇ア縺�; Date 繧ェ繝悶ず繧ァ繧ッ繝医�縲√ヲ繝ウ繝医�谺�螯ゅr繝偵Φ繝� String 縺御ク弱∴繧峨l縺溘h縺�↓謇ア縺�€�

繝帙せ繝医が繝悶ず繧ァ繧ッ繝医�縲√ヲ繝ウ繝医�谺�螯ゅr莉悶�譁ケ豕輔〒謇ア縺」縺ヲ繧医>縲�

11.6.2 貂帶ウ墓シ皮ョ怜ュ� (The Subtraction Operator) ( - )

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

  1. AdditiveExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. MultiplicativeExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. ToNumber(Result(2)) 繧貞他蜃コ縺吶€�
  6. ToNumber(Result(4)) 繧貞他蜃コ縺吶€�
  7. Result(5) 縺ィ Result(6) 縺ォ縲∵ク帶ウ墓シ皮ョ励r驕ゥ逕ィ縺吶k縲ゆク玖ィ倥ヮ繝シ繝亥盾辣ァ (繧サ繧ッ繧キ繝ァ繝ウ 11.6.3)縲�
  8. Result(7) 繧定ソ斐☆縲�

11.6.3 蜉�貂帶シ皮ョ怜ュ舌�謨ー縺ク縺ョ驕ゥ逕ィ (Applying the Additive Operators ( +,- ) to Numbers)

謨ー蝙九� 2 蛟九�鬆�↓驕ゥ逕ィ縺輔l繧九→縺阪€� + 貍皮ョ怜ュ舌�蜉�豕輔r陦後>縲����蜥後r逕滓�縺吶k縲�

- 貍皮ョ怜ュ舌�貂帶ウ輔r陦後>縲� 2 蛟九�謨ー鬆��蟾ョ繧堤函謌舌☆繧九€�

蜉�豕輔�蜿ッ謠帷噪貍皮ョ� (commutative operation) 縺ァ縺ゅk縺後€∝クク縺ォ邨仙粋逧� (associative) 縺ィ縺�≧縺薙→縺ァ縺ッ縺ェ縺�€�

蜉�豕輔�邨先棡縺ッ縲� IEEE 754 蛟咲イセ蠎ヲ險育ョ苓ヲ丞援繧剃スソ逕ィ縺励※豎コ螳壹&繧後k:

  • 縺ゥ縺。繧峨�鬆�b NaN 縺ェ繧峨�縲∫オ先棡縺ッ NaN 縺ァ縺ゅk縲�
  • 逡ー隨ヲ蜿キ縺ョ 2 蛟九�辟。髯仙、ァ縺ョ蜥後�縲� NaN 縺ァ縺ゅk縲�
  • 蜷檎ャヲ蜿キ縺ョ 2 蛟九�辟。髯仙、ァ縺ョ蜥後�縲√◎縺ョ隨ヲ蜿キ縺ョ辟。髯仙、ァ縺ァ縺ゅk縲�
  • 1 蛟九�辟。髯仙、ァ縺ィ譛蛾剞謨ー縺ョ蜥後�縲∫┌髯仙、ァ縺ョ鬆�→遲峨@縺�€�
  • 2 蛟九�雋�隨ヲ蜿キ縺ョ 0 縺ョ蜥後�縲� -0 縺ァ縺ゅk縲�2 蛟九�豁」隨ヲ蜿キ縺ョ 0縲√∪縺� 2 蛟九�逡ー隨ヲ蜿キ縺ョ 0 縺ョ蜥後�縲� +0 縺ァ縺ゅk縲�
  • 0 縺ィ 0 莉・螟悶�譛蛾剞謨ー縺ョ蜥後�縲� 0 莉・螟悶�鬆�→遲峨@縺�€�
  • 逡ー隨ヲ蜿キ縺ァ蜷後§螟ァ縺阪&縺ョ 2 蛟九� 0 莉・螟悶�譛蛾剞謨ー縺ョ蜥後�縲� +0 縺ァ縺ゅk縲�
  • 辟。髯仙、ァ縺ァ繧� 0 縺ァ繧� NaN 縺ァ繧ゅ↑縺上€���′蜷檎ャヲ蜿キ縺ァ縺ゅk縺九∪縺溘�逡ー縺ェ繧句、ァ縺阪&繧呈戟縺、谿九j縺ョ繧ア繝シ繧ケ縺ァ縺ッ縲∝柱縺檎ョ怜�縺輔l縲� IEEE 754 逶エ霑代∈縺ョ荳ク繧√Δ繝シ繝峨r菴ソ逕ィ縺励※縲∫峩霑代�陦ィ迴セ蜿ッ閭ス縺ェ蛟、縺ク荳ク繧√i繧後k. 螟ァ縺阪&縺瑚。ィ縺帙↑縺�⊇縺ゥ螟ァ縺阪>縺ェ繧峨�縲∵シ皮ョ励�繧ェ繝シ繝舌�繝輔Ο繝シ縺励€∫オ先棡縺ッ驕ゥ蛻�↑隨ヲ蜷医�辟。髯仙、ァ縺ィ縺ェ繧九€� ECMAScript 險€隱槭�縲� IEEE 754 縺ォ螳夂セゥ縺輔l繧区ョオ髫守噪繧「繝ウ繝€繝シ繝輔Ο繝シ (gradual underflow) 縺ョ繧オ繝昴�繝医r蠢��医→縺吶k縲�

謨ー蝙九� 2 蛟九�鬆�↓驕ゥ逕ィ縺輔l繧九→縺阪€� - 貍皮ョ怜ュ舌�貂帶ウ輔r陦後>縲����蟾ョ繧堤函謌舌☆繧�; 蟾ヲ鬆�′陲ォ貂帶焚縺ァ縲∝承鬆�′貂帶焚縺ァ縺ゅk縲よ焚鬆� a 縺ィ b 繧剃ク弱∴繧峨l繧九→縲∝クク縺ォ a-b 縺ッ a+(-b) 縺ィ蜷後§邨先棡繧堤函謌舌☆繧九€�

11.7 繝薙ャ繝亥ケ�す繝輔ヨ貍皮ョ怜ュ� (Bitwise Shift Operators)

11.7.1 蟾ヲ繧キ繝輔ヨ貍皮ョ怜ュ� (The Left Shift Operator) ( << )

蜿ウ鬆�〒謖�ョ壹&繧後k驥上↓繧医j縲∝キヲ鬆�ク翫↓繝薙ャ繝亥ケ�キヲ繧キ繝輔ヨ貍皮ョ励r陦後≧縲�

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

  1. ShiftExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. AdditiveExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. ToInt32(Result(2)) 繧貞他蜃コ縺吶€�
  6. ToUint32(Result(4)) 繧貞他蜃コ縺吶€�
  7. Result(6) 縺ョ荳倶ス� 5 繝薙ャ繝井サ・螟悶r繝槭せ繧ッ縺吶k縲� 縺、縺セ繧翫€� Result(6) & 0x1F 繧堤ョ怜�縺吶k縲�
  8. Result(5) 繧� Result(7) 繝薙ャ繝亥キヲ繧キ繝輔ヨ縺吶k縲らオ先棡縺ッ隨ヲ蜿キ莉倥″ 32 繝薙ャ繝域紛謨ー縺ァ縺ゅk縲�
  9. Result(8) 繧定ソ斐☆縲�

11.7.2 隨ヲ蜿キ莉倥″蜿ウ繧キ繝輔ヨ貍皮ョ怜ュ� (The Signed Right Shift Operator) ( >> )

蜿ウ鬆�〒謖�ョ壹&繧後k驥上↓繧医j縲∝キヲ鬆�ク翫↓隨ヲ蜿キ繧剃シエ縺�ン繝�ヨ蟷�承繧キ繝輔ヨ貍皮ョ励r陦後≧縲�

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

  1. ShiftExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. AdditiveExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. ToInt32(Result(2)) 繧貞他蜃コ縺吶€�
  6. ToUint32(Result(4)) 繧貞他蜃コ縺吶€�
  7. Result(6) 縺ョ荳倶ス� 5 繝薙ャ繝井サ・螟悶r繝槭せ繧ッ縺吶k縲� 縺、縺セ繧翫€� Result(6) & 0x1F 繧堤ョ怜�縺吶k縲�
  8. Result(5) 繧� Result(7) 繝薙ャ繝育ャヲ蜿キ諡。蠑オ蜿ウ繧キ繝輔ヨ縺吶k縲よ怙荳贋ス阪ン繝�ヨ縺ッ莨晄眺縺吶k縲らオ先棡縺ッ隨ヲ蜿キ莉倥″ 32 繝薙ャ繝域紛謨ー縺ァ縺ゅk縲�
  9. Result(8) 繧定ソ斐☆縲�

11.7.3 隨ヲ蜿キ縺ェ縺怜承繧キ繝輔ヨ貍皮ョ怜ュ� (The Unsigned Right Shift Operator) ( >>> )

蜿ウ鬆�〒謖�ョ壹&繧後k驥上↓繧医j縲∝キヲ鬆�ク翫↓ 0 繧剃シエ縺�ン繝�ヨ蟷�承繧キ繝輔ヨ貍皮ョ励r陦後≧縲�

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

  1. ShiftExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. AdditiveExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. ToUint32(Result(2)) 繧貞他蜃コ縺吶€�
  6. ToUint32(Result(4)) 繧貞他蜃コ縺吶€�
  7. Result(6) 縺ョ荳倶ス� 5 繝薙ャ繝井サ・螟悶r繝槭せ繧ッ縺吶k縲� 縺、縺セ繧翫€� Result(6) & 0x1F 繧堤ョ怜�縺吶k縲�
  8. Result(5) 繧� Result(7) 繝薙ャ繝亥�縺�縺� 0 諡。蠑オ蜿ウ繧キ繝輔ヨ縺吶k縲らゥコ繝薙ャ繝医� 0 縺ァ蝓九a繧峨l繧九€らオ先棡縺ッ隨ヲ蜿キ縺ェ縺� 32 繝薙ャ繝域紛謨ー縺ァ縺ゅk縲�
  9. Result(8) 繧定ソ斐☆縲�

11.8 髢「菫よシ皮ョ怜ュ� (Relational Operators)

Syntax
RelationalExpression :
ShiftExpression
RelationalExpression < ShiftExpression
RelationalExpression > ShiftExpression
RelationalExpression <= ShiftExpression
RelationalExpression >= ShiftExpression
RelationalExpression instanceof ShiftExpression
RelationalExpression in ShiftExpression
RelationalExpressionNoIn :
ShiftExpression
RelationalExpressionNoIn < ShiftExpression
RelationalExpressionNoIn > ShiftExpression
RelationalExpressionNoIn <= ShiftExpression
RelationalExpressionNoIn >= ShiftExpression
RelationalExpressionNoIn instanceof ShiftExpression

NOTE NoIn 螟牙喧蠖「縺ッ縲’or 譁��荳ュ縺ョ in 貍皮ョ怜ュ舌r蜷ォ繧€髢「菫ょシ丞�縺ョ in 貍皮ョ怜ュ舌�豺キ荵ア縺ョ蝗樣∩縺ォ蠢�ヲ√〒縺ゅk縲�

Semantics

髢「菫よシ皮ョ怜ュ舌�隧穂セ。縺ョ邨先棡縺ッ蟶ク縺ォ Boolean 蝙九〒縺ゅj縲∵シ皮ョ怜ュ舌↓蜷阪▼縺代i繧後◆髢「菫ゅ′縺昴� 2 鬆�俣縺ォ邯ュ謖√&繧後※縺�k縺九←縺�°繧貞渚譏�縺吶k縲�

RelationalExpressionNoIn 逕滓�隕丞援縺ッ RelationalExpression 逕滓�隕丞援縺ィ蜷梧ァ倥↓隧穂セ。縺輔l繧九′縲∝�驛ィ縺ョ RelationalExpression 縺ョ莉」繧上j縺ォ縲ヽelationalExpressionNoIn 縺瑚ゥ穂セ。縺輔l繧九€�

11.8.1 Less-than 貍皮ョ怜ュ� (The Less-than Operator) ( < )

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

  1. RelationalExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ShiftExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. 豈碑シ� Result(2) < Result(4) 繧貞ョ溯。後☆繧九€� (繧サ繧ッ繧キ繝ァ繝ウ 11.8.5.)
  6. Result(5) 縺� undefined 縺ェ繧峨�縲� false 繧定ソ斐☆縲ゅ◎縺�〒縺ェ縺代l縺ー縲� Result(5) 繧定ソ斐☆縲�

11.8.2 Grater-than 貍皮ョ怜ュ� (The Greater-than Operator) ( > )

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

  1. RelationalExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ShiftExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. 豈碑シ� Result(4) < Result(2) 繧貞ョ溯。後☆繧九€� (繧サ繧ッ繧キ繝ァ繝ウ 11.8.5.)
  6. Result(5) 縺� undefined 縺ェ繧峨�縲� false 繧定ソ斐☆縲ゅ◎縺�〒縺ェ縺代l縺ー縲� Result(5) 繧定ソ斐☆縲�

11.8.3 Less-than-or-equal 貍皮ョ怜ュ� (The Less-than-or-equal Operator) ( <= )

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

  1. RelationalExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ShiftExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. 豈碑シ� Result(4) < Result(2) 繧貞ョ溯。後☆繧� (繧サ繧ッ繧キ繝ァ繝ウ 11.8.5.)
  6. Result(5) 縺� true 縺セ縺溘� undefined縺ェ繧峨�縲� false 繧定ソ斐☆縲ゅ◎縺�〒縺ェ縺代l縺ー縲� true 繧定ソ斐☆縲�

11.8.4 Greater-than-or-equal 貍皮ョ怜ュ� (The Greater-than-or-equal Operator) ( >= )

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

  1. RelationalExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ShiftExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. 豈碑シ� Result(2) < Result(4) 繧貞ョ溯。後☆繧九€� (繧サ繧ッ繧キ繝ァ繝ウ 11.8.5.)
  6. Result(5) 縺� true 縺セ縺溘� undefined 縺ェ繧峨�縲� false 繧定ソ斐☆縲ゅ◎縺�〒縺ェ縺代l縺ー縲� true 繧定ソ斐☆縲�

11.8.5 謚ス雎。逧�未菫よッ碑シ�い繝ォ繧エ繝ェ繧コ繝� (The Abstract Relational Comparison Algorithm)

x 縺ィ y 繧貞€、縺ィ縺励※縲∵ッ碑シ� x < y 縺ッ縲� true, false, 縺セ縺溘� undefined 繧堤函謌舌☆繧� (蟆代↑縺上→繧ゆク€譁ケ縺ョ鬆�′ NaN 縺ァ縺ゅk縺薙→繧堤、コ縺�)縲� 縺薙�豈碑シ��谺。縺ョ繧医≧縺ォ螳溯。後&繧後k:

  1. ToPrimitive(x, hint Number) 繧貞他蜃コ縺吶€�
  2. ToPrimitive(y, hint Number) 繧貞他蜃コ縺吶€�
  3. If Type(Result(1)) 縺� String 縺九▽ Type(Result(2)) 縺� String 縺ェ繧峨�縲√せ繝�ャ繝� 16 縺ク縲� (縺薙�繧ケ繝�ャ繝励′ or 縺ョ莉」繧上j縺ォ and 繧剃スソ縺�€∝刈豕墓シ皮ョ怜ュ� + 縺ョ縺溘a縺ョ繧「繝ォ繧エ繝ェ繧コ繝�縺ォ縺翫>縺ヲ繧ケ繝�ャ繝� 7 縺九i逡ー縺ェ繧九%縺ィ縺ォ豕ィ諢上€�)
  4. ToNumber(Result(1)) 繧貞他蜃コ縺吶€�
  5. ToNumber(Result(2)) 繧貞他蜃コ縺吶€�
  6. Result(4) 縺� NaN 縺ェ繧峨�縲� undefined 繧定ソ斐☆縲�
  7. Result(5) 縺� NaN 縺ェ繧峨�縲� undefined 繧定ソ斐☆縲�
  8. Result(4) 縺ィ Result(5) 縺悟酔縺俶焚蛟、縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  9. Result(4) 縺� +0 縺九▽ Result(5) 縺� -0 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  10. Result(4) 縺� -0 縺九▽ Result(5) 縺� +0 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  11. Result(4) 縺� +竏� 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  12. Result(5) 縺� +竏� 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  13. Result(5) 縺� -竏� 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  14. Result(4) 縺� -竏� 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  15. Result(4) 縺ョ謨ー蟄ヲ蛟、縺� Result(5) 縺ョ謨ー蟄ヲ蛟、繧医j蟆上&縺代l縺ー縲� true 繧定ソ斐☆縲� -- 縺薙l繧峨�謨ー蟄ヲ蛟、縺ッ蜈ア縺ォ譛蛾剞縺ェ 0 莉・螟悶�蛟、縺ァ縺ゅk縺薙→縺ォ豕ィ諢� -- 縺昴≧縺ァ縺ェ縺代l縺ー縲� false 繧定ソ斐☆縲�
  16. Result(2) 縺� Result(1) 縺ョ謗・鬆ュ霎槭↑繧峨�縲� false 繧定ソ斐☆縲� (q 縺� p 縺ィ莉悶�譁�ュ怜� r 縺ョ騾」邨千オ先棡縺ァ縺ゅj縺医k縺ェ繧峨�縲∵枚蟄怜�蛟、 p 縺ッ譁�ュ怜�蛟、 q 縺ョ謗・鬆ュ霎槭〒縺ゅk縲S 繧堤ゥコ譁�ュ怜�縺ィ縺吶l縺ー莉サ諢上�譁�ュ怜�縺ッ縺昴l閾ェ霄ォ縺ョ謗・鬆ュ霎槭〒縺ゅk縺薙→縺ォ豕ィ諢上€�)
  17. Result(1) 縺� Result(2) 縺ョ謗・鬆ュ霎槭↑繧峨�縲� true 繧定ソ斐☆縲�
  18. Result(1) 縺ョ菴咲スョ k 縺ョ譁�ュ励′ Result(2) 縺ョ菴咲スョ k 縺ョ譁�ュ励→逡ー縺ェ繧九h縺�↑雋�縺ァ縺ェ縺�怙蟆乗紛謨ー繧� k 縺ィ縺吶k縲� (縺ゥ縺。繧峨�譁�ュ怜�繧ゆコ偵>縺ョ謗・鬆ュ霎槭→縺ェ繧峨↑縺�h縺�↑ k 縺悟ュ伜惠縺励↑縺代l縺ー縺ェ繧峨↑縺�€�)
  19. m 繧� Result(1) 縺ョ菴咲スョ k 縺ョ譁�ュ励�繧ウ繝シ繝峨�繧、繝ウ繝亥€、縺ァ縺ゅk謨エ謨ー縺ィ縺吶k縲�
  20. n 繧� Result(2) 縺ョ菴咲スョ k 縺ョ譁�ュ励�繧ウ繝シ繝峨�繧、繝ウ繝亥€、縺ァ縺ゅk謨エ謨ー縺ィ縺吶k縲�
  21. m < n 縺ェ繧峨� true 繧定ソ斐@縲√◎縺�〒縺ェ縺代l縺ー縲� false 繧定ソ斐☆縲�

NOTE 譁�ュ怜�豈碑シ��縲∝腰邏斐↑霎樊嶌逧�コ丞�繧偵さ繝シ繝峨�繧、繝ウ繝亥€、縺ョ繧キ繝シ繧ア繝ウ繧ケ縺ョ蛟、縺ォ逕ィ縺�k縲よ枚蟄励d譁�ュ怜�縺ョ遲我セ。諤ァ縲√♀繧医� Unicode 莉墓ァ� 縺ァ螳夂セゥ縺輔l繧矩��コ上�辣ァ蜷医�縲√%繧御サ・荳願、�尅縺ァ諢丞袖隲也噪縺ォ謖�髄縺励◆螳夂セゥ繧堤畑縺�k隧ヲ縺ソ縺ッ縺ェ縺�€ゅ◎繧後f縺医€� Unicode 讓呎コ悶↓繧医▲縺ヲ隕乗コ也噪縺ォ遲峨@縺�枚蟄怜�縺御ク咲ュ我セ。縺ィ讀懈渊縺輔l繧九°繧ゅ@繧後↑縺�€ょ柑譫懊↓縺翫>縺ヲ縺薙�繧「繝ォ繧エ繝ェ繧コ繝�縺ッ縲∝曙譁ケ縺ョ譁�ュ怜�縺梧里縺ォ豁」隕丞喧蠖「蠑上〒縺ゅk縺薙→繧呈Φ螳壹☆繧九€�

11.8.6 instanceof 貍皮ョ怜ュ� (The instanceof operator)

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

  1. RelationalExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ShiftExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. Result(4) 縺後が繝悶ず繧ァ繧ッ繝医〒縺ェ縺代l縺ー縲∽セ句、� TypeError 繧呈兜縺偵k縲�
  6. Result(4) 縺� [[HasInstance]] 繝。繧ス繝�ラ繧呈戟縺溘↑縺代l縺ー縲∽セ句、� TypeError 繧呈兜縺偵k縲�
  7. Result(4) 縺ョ [[HasInstance]] 繝。繧ス繝�ラ繧貞他縺ウ縲√ヱ繝ゥ繝。繝シ繧ソ Result(2) 繧呈ク。縺吶€�
  8. Result(7) 繧定ソ斐☆縲�

11.8.7 in 貍皮ョ怜ュ� (The in operator)

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

  1. RelationalExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ShiftExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. Result(4) 縺後が繝悶ず繧ァ繧ッ繝医〒縺ェ縺代l縺ー縲∽セ句、� TypeError 繧呈兜縺偵k縲�
  6. ToString(Result(2)) 繧貞他蜃コ縺吶€�
  7. Result(4) 縺ョ [[HasProperty]] 繝。繧ス繝�ラ繧貞他縺ウ縲√ヱ繝ゥ繝。繝シ繧ソ縺ォ Result(6) 繧呈ク。縺吶€�
  8. Result(7) 繧定ソ斐☆縲�

11.9 遲我セ。貍皮ョ怜ュ� (Equality Operators)

Syntax
EqualityExpression :
RelationalExpression
EqualityExpression == RelationalExpression
EqualityExpression != RelationalExpression
EqualityExpression === RelationalExpression
EqualityExpression !== RelationalExpression
EqualityExpressionNoIn :
RelationalExpressionNoIn
EqualityExpressionNoIn == RelationalExpressionNoIn
EqualityExpressionNoIn != RelationalExpressionNoIn
EqualityExpressionNoIn === RelationalExpressionNoIn
EqualityExpressionNoIn !== RelationalExpressionNoIn
Semantics

遲我セ。貍皮ョ怜ュ占ゥ穂セ。縺ョ邨先棡縺ッ蟶ク縺ォ Boolean 蝙九〒縺ゅj縲∵シ皮ョ怜ュ舌〒遉コ縺輔l繧矩未騾」諤ァ縺� 2 鬆�俣縺ァ邯ュ謖√&繧後※縺�k縺九←縺�°繧貞渚譏�縺吶k縲�

EqualityExpressionNoIn 逕滓�隕丞援縺ッ EqualityExpression 逕滓�隕丞援縺ィ蜷梧ァ倥↓隧穂セ。縺輔l繧九′縲∝�驛ィ縺ョ EqualityExpression 縺ィ RelationalExpression 縺ョ莉」繧上j縺ォ縲√◎繧後◇繧� EqualityExpressionNoIn 縺ィ RelationalExpressionNoIn 縺瑚ゥ穂セ。縺輔l繧九€�

11.9.1 遲我セ。貍皮ョ怜ュ� (The Equals Operator) ( == )

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

  1. EqualityExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. RelationalExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. 豈碑シ� Result(4) == Result(2) 繧貞ョ溯。後☆繧九€� (繧サ繧ッ繧キ繝ァ繝ウ 11.9.3)
  6. Result(5) 繧定ソ斐☆縲�

11.9.2 荳咲ュ我セ。貍皮ョ怜ュ� (The Does-not-equals Operator) ( != )

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

  1. EqualityExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. RelationalExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. 豈碑シ� Result(4) == Result(2) 繧貞ョ溯。後☆繧九€� (繧サ繧ッ繧キ繝ァ繝ウ 11.9.3)
  6. Result(5) 縺� true 縺ェ繧峨€� false 繧定ソ斐☆縲ゅ◎縺�〒縺ェ縺代l縺ー縲� true 繧定ソ斐☆縲�

11.9.3 謚ス雎。逧�ュ我セ。豈碑シ�い繝ォ繧エ繝ェ繧コ繝� (The Abstract Equality Comparison Algorithm)

x 縺ィ y 繧貞€、縺ィ縺吶k豈碑シ� x==y 縺ッ縲� true 縺セ縺溘� false 繧堤函謌舌☆繧九€よャ。縺ョ繧医≧縺ォ豈碑シ��螳溯。後&繧後k:

  1. Type(x) 縺ィ Type(y) 縺檎焚縺ェ繧句�エ蜷医�縲√せ繝�ャ繝� 14 縺ク縲�
  2. Type(x) 縺� Undefined 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  3. Type(x) 縺� Null 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  4. Type(x) 縺� Number 縺ァ縺ェ縺代l縺ー縲√せ繝�ャ繝� 11 縺ク縲�
  5. x 縺� NaN 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  6. y 縺� NaN 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  7. x 縺� y 縺ィ蜷後§謨ー縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  8. x 縺� +0 縺ァ y 縺� -0 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  9. x 縺� -0 縺ァ y 縺� +0 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  10. false 繧定ソ斐☆縲�
  11. Type(x) 縺� String 縺ェ繧峨�縲』 縺ィ y 縺ョ譁�ュ励す繝シ繧ア繝ウ繧ケ縺悟ョ悟�縺ォ蜷後§(蜷後§髟キ縺輔〒蟇セ蠢懊☆繧倶ス咲スョ縺ォ蜷後§譁�ュ励′縺ゅk)縺ェ繧� true 繧定ソ斐@縲√◎縺�〒縺ェ縺代l縺ー false 繧定ソ斐☆縲�
  12. Type(x) 縺� Boolean 縺ェ繧峨�縲� x 縺ィ y 縺後→繧ゅ↓ true 縺九→繧ゅ↓ false 縺ェ繧� true 繧定ソ斐@縲√◎縺�〒縺ェ縺代l縺ー false 繧定ソ斐☆縲�
  13. x 縺ィ y 縺悟酔縺倥が繝悶ず繧ァ繧ッ繝医r蜿ら�縺励※縺�k縺九€√∪縺溘�莠偵>縺ォ邨仙粋縺励※縺�k繧ェ繝悶ず繧ァ繧ッ繝�(繧サ繧ッ繧キ繝ァ繝ウ13.1.2) 繧貞盾辣ァ縺励※縺�l縺ー true 繧定ソ斐@縲√◎縺�〒縺ェ縺代l縺ー false 繧定ソ斐☆縲�
  14. x 縺� null 縺ァ y 縺� undefined 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  15. x 縺� undefined 縺ァ y 縺� null 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  16. Type(x) 縺� Number 縺ァ Type(y) 縺� String 縺ェ繧峨�縲∵ッ碑シ� x == ToNumber(y) 縺ョ邨先棡繧定ソ斐☆縲�
  17. Type(x) 縺� String 縺ァ Type(y) 縺� Number 縺ェ繧峨�縲∵ッ碑シ� ToNumber(x) == y 縺ョ邨先棡繧定ソ斐☆縲�
  18. Type(x) 縺� Boolean 縺ェ繧峨�縲∵ッ碑シ� ToNumber(x) == y 縺ョ邨先棡繧定ソ斐☆縲�
  19. Type(y) 縺� Boolean 縺ェ繧峨�縲∵ッ碑シ� x == ToNumber(y) 縺ョ邨先棡繧定ソ斐☆縲�
  20. Type(x) 縺� String 縺� Number 縺ァ Type(y) 縺� Object 縺ェ繧峨�縲∵ッ碑シ� x == ToPrimitive(y) 縺ョ邨先棡繧定ソ斐☆縲�
  21. Type(x) 縺� Object 縺ァ Type(y) 縺� String 縺� Number 縺ェ繧峨�縲∵ッ碑シ� ToPrimitive(x) == y 縺ョ邨先棡繧定ソ斐☆縲�
  22. false 繧定ソ斐☆縲�

NOTE 遲我セ。縺ョ荳翫�螳夂セゥ繧剃ク弱∴繧峨l繧�:

"" + a == "" + b 縺ァ譁�ュ怜�豈碑シ�r蠑キ蛻カ縺ァ縺阪k縲�

a - 0 == b - 0 縺ァ謨ー蛟、豈碑シ�r蠑キ蛻カ縺ァ縺阪k縲�

!a == !b 縺ァ逵溷⊃豈碑シ�r蠑キ蛻カ縺ァ縺阪k縲�

遲我セ。貍皮ョ怜ュ舌�谺。縺ョ invariants 繧堤カュ謖√☆繧�:

  1. A != B 縺ッ !(A == B) 縺ィ遲峨@縺�€�
  2. A == B 縺ッ縲� A 縺ィ B 縺ョ隧穂セ。縺ョ鬆�コ上r髯、縺阪€� B == A 縺ィ遲峨@縺�€�

遲我セ。貍皮ョ怜ュ舌�蟶ク縺ォ騾夐℃ (transitive) 縺ァ縺ッ縺ェ縺�€ゆセ九∴縺ー縲∝酔縺俶枚蟄怜�蛟、繧偵≠繧峨o縺� 2 蛟九�蛹コ蛻・縺輔l繧� String 繧ェ繝悶ず繧ァ繧ッ繝医′蟄伜惠蜿ッ閭ス縺ァ縺ゅk; 縺昴l縺槭l縺ョ String 繧ェ繝悶ず繧ァ繧ッ繝医� == 貍皮ョ怜ュ舌↓繧医▲縺ヲ譁�ュ怜�蛟、縺檎ュ峨@縺�→縺ッ閠�∴繧峨l繧九′縲� 2 蛟九� String 繧ェ繝悶ず繧ァ繧ッ繝医�莠偵>縺ォ遲我セ。縺ォ縺ッ縺ェ繧峨↑縲�

譁�ュ怜�豈碑シ��縲√さ繝シ繝峨�繧、繝ウ繝亥€、縺ョ繧キ繝シ繧ア繝ウ繧ケ縺ョ蛟、縺ォ蜊倡エ斐↑遲我セ。讀懈渊繧剃スソ逕ィ縺吶k縲よ枚蟄励d譁�ュ怜�縺ョ遲我セ。諤ァ縲√♀繧医� Unicode 2.0 莉墓ァ� 縺ァ螳夂セゥ縺輔l繧矩��コ上�辣ァ蜷医�縲√h繧願、�尅縺ァ諢丞袖隲也噪縺ォ謖�髄縺励◆螳夂セゥ繧堤畑縺�k隧ヲ縺ソ縺ッ縺ェ縺�€ゅ◎繧後f縺医€� Unicode 讓呎コ悶↓繧医▲縺ヲ隕乗コ也噪縺ォ遲峨@縺�枚蟄怜�縺御ク咲ュ我セ。縺ィ讀懈渊縺輔l繧九°繧ゅ@繧後↑縺�€ょ柑譫懊↓縺翫>縺ヲ縺薙�繧「繝ォ繧エ繝ェ繧コ繝�縺ッ縲∝曙譁ケ縺ョ譁�ュ怜�縺梧里縺ォ豁」隕丞喧蠖「蠑上〒縺ゅk縺薙→繧呈Φ螳壹☆繧九€�

11.9.4 蜴ウ蟇�ュ我セ。貍皮ョ怜ュ� (The Strict Equals Operator) ( === )

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

  1. EqualityExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. RelationalExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. 豈碑シ� Result(4) === Result(2) 繧定。後≧縲� (蠕瑚ソー)
  6. Result(5) 繧定ソ斐☆縲�

11.9.5 蜴ウ蟇�ク咲ュ我セ。貍皮ョ怜ュ� (The Strict Does-not-equal Operator) ( !== )

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

  1. EqualityExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. RelationalExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. 豈碑シ� Result(4) === Result(2) 繧定。後≧縲� (蠕瑚ソー)
  6. Result(5) 縺� true 縺ェ繧峨�縲� false 繧定ソ斐☆縲ゅ◎縺�〒縺ェ縺代l縺ー縲� true 繧定ソ斐☆縲�

11.9.6 蜴ウ蟇�ュ我セ。豈碑シ�い繝ォ繧エ繝ェ繧コ繝� (The Strict Equality Comparison Algorithm)

x 縺ィ y 繧貞€、縺ィ縺励※縲∵ッ碑シ� x === y 縺ッ true 縺セ縺溘� false 繧堤函謌舌☆繧九€ゅ◎縺ョ繧医≧縺ェ豈碑シ��谺。縺ョ繧医≧縺ォ陦後o繧後k:

  1. Type(x) 縺� Type(y) 縺ィ逡ー縺ェ繧九↑繧峨�縲� false 繧定ソ斐☆縲�
  2. Type(x) 縺� Undefined 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  3. Type(x) 縺� Null 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  4. Type(x) 縺� Number 縺ァ縺ェ縺�↑繧峨�縲� 繧ケ繝�ャ繝� 11 縺ク縲�
  5. x 縺� NaN 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  6. y 縺� NaN 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  7. x 縺� y 縺ィ蜷後§謨ー縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  8. x 縺� +0 縺九▽ y 縺� -0 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  9. x 縺� -0 縺九▽ y 縺� +0 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  10. false 繧定ソ斐☆縲�
  11. Type(x) 縺� String 縺ェ繧峨�縲� x 縺ィ y 縺悟宍蟇�↓蜷後§譁�ュ励す繝シ繧ア繝ウ繧ケ (蜷後§髟キ縺輔〒蟇セ蠢懊☆繧倶ス咲スョ縺悟酔縺俶枚蟄�) 縺ァ縺ゅk縺ェ繧� true 繧定ソ斐☆; 縺昴≧縺ァ縺ェ縺�↑繧峨�縲� false 繧定ソ斐☆縲�
  12. If Type(x) 縺� Boolean 縺ェ繧峨�縲� x 縺ィ y 縺悟�縺ォ true 縺ァ縺ゅk縺九€∝�縺ォ false 縺ァ縺ゅk縺ェ繧� true 繧定ソ斐☆; 縺昴≧縺ァ縺ェ縺�↑繧峨�縲� false 繧定ソ斐☆縲�
  13. x 縺ィ y 縺悟酔縺倥が繝悶ず繧ァ繧ッ繝医r蜿ら�縺励※縺�k縺ェ繧峨�縲√∪縺溘◎繧後i縺御コ偵>縺ォ邨仙粋縺励◆繧ェ繝悶ず繧ァ繧ッ繝� (繧サ繧ッ繧キ繝ァ繝ウ 13.1.2) 繧貞盾辣ァ縺励※縺�k縺ェ繧峨�縲� true 繧定ソ斐☆縲ゅ◎縺�〒縺ェ縺�↑繧峨�縲� false 繧定ソ斐☆縲�

11.10 繝舌う繝翫Μ繝薙ャ繝域シ皮ョ怜ュ� (Binary Bitwise Operators)

Syntax
BitwiseANDExpression :
EqualityExpression
BitwiseANDExpression & EqualityExpression
BitwiseANDExpressionNoIn :
EqualityExpressionNoIn
BitwiseANDExpressionNoIn & EqualityExpressionNoIn
BitwiseXORExpression :
BitwiseANDExpression
BitwiseXORExpression ^ BitwiseANDExpression
BitwiseXORExpressionNoIn :
BitwiseANDExpressionNoIn
BitwiseXORExpressionNoIn ^ BitwiseANDExpressionNoIn
BitwiseORExpression :
BitwiseXORExpression
BitwiseORExpression | BitwiseXORExpression
BitwiseORExpressionNoIn :
BitwiseXORExpressionNoIn
BitwiseORExpressionNoIn | BitwiseXORExpressionNoIn
Semantics

@ 縺ョ縺ィ縺薙m繧剃ク翫�逕滓�隕丞援縺ョ繝薙ャ繝域シ皮ョ怜ュ舌→縺励※縲∫函謌占ヲ丞援 A : A @ B 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. A 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. B 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. ToInt32(Result(2)) 繧貞他蜃コ縺吶€�
  6. ToInt32(Result(4)) 繧貞他蜃コ縺吶€�
  7. 繝薙ャ繝域シ皮ョ怜ュ� @ 繧� Result(5) 縺ィ Result(6) 縺ォ驕ゥ逕ィ縺吶k縲らオ先棡縺ッ隨ヲ蜿キ莉� 32 繝薙ャ繝域紛謨ー縺ァ縺ゅk縲�
  8. Result(7) 繧定ソ斐☆縲�

11.11 繝舌う繝翫Μ隲也炊貍皮ョ怜ュ� (Binary Logical Operators)

Syntax
LogicalANDExpression :
BitwiseORExpression
LogicalANDExpression && BitwiseORExpression
LogicalANDExpressionNoIn :
BitwiseORExpressionNoIn
LogicalANDExpressionNoIn && BitwiseORExpressionNoIn
LogicalORExpression :
LogicalANDExpression
LogicalORExpression || LogicalANDExpression
LogicalORExpressionNoIn :
LogicalANDExpressionNoIn
LogicalORExpressionNoIn || LogicalANDExpressionNoIn
Semantics

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

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

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

  1. LogicalORExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. ToBoolean(Result(2)) 繧貞他蜃コ縺吶€�
  4. Result(3) 縺� true 縺ェ繧峨�縲� Result(2) 繧定ソ斐☆縲�
  5. LogicalANDExpression 繧定ゥ穂セ。縲�
  6. GetValue(Result(5)) 繧貞他蜃コ縺吶€�
  7. Result(6) 繧定ソ斐☆縲�

LogicalANDExpressionNoIn 逕滓�隕丞援縺ィ LogicalORExpressionNoIn 逕滓�隕丞援縺ッ縲� LogicalANDExpression 逕滓�隕丞援縺ィ LogicalORExpression 逕滓�隕丞援縺ィ蜷梧ァ倥↓隧穂セ。縺輔l繧九′縲∝�驛ィ縺ョ LogicalANDExpression, BitwiseORExpression, LogicalORExpression, 縺ョ莉」繧上j縺ォ縲√◎繧後◇繧� LogicalANDExpressionNoIn, BitwiseORExpressionNoIn, LogicalORExpressionNoIn 縺瑚ゥ穂セ。縺輔l繧九€�

NOTE && 貍皮ョ怜ュ舌€√∪縺� || 貍皮ョ怜ュ舌�逕滓�縺吶k蛟、縺� Boolean 蝙九〒縺ゅk蠢�ヲ√�縺ェ縺�€ら函謌舌&繧後k蛟、縺ッ蟶ク縺ォ縲� 2 蛟九�鬆�シ上�縺�■縺ョ 1 縺、縺ョ蛟、縺ァ縺ゅk縲�.

11.12 譚。莉カ貍皮ョ怜ュ� (Conditional Operator) ( ?: )

Syntax
ConditionalExpression :
LogicalORExpression
LogicalORExpression ? AssignmentExpression : AssignmentExpression
ConditionalExpressionNoIn :
LogicalORExpressionNoIn
LogicalORExpressionNoIn ? AssignmentExpression : AssignmentExpressionNoIn
Semantics

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

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

ConditionalExpressionNoIn 逕滓�隕丞援縺ッ縲� ConditionalExpression 逕滓�隕丞援縺ィ蜷梧ァ倥↓隧穂セ。縺輔l繧九′縲∝�驛ィ縺ョ LogicalORExpression, 1 縺、逶ョ縺ョ AssignmentExpression, 2 縺、逶ョ縺ョ AssignmentExpression, 縺ョ莉」繧上j縺ォ縲√◎繧後◇繧� LogicalORExpressionNoIn, AssignmentExpression, AssignmentExpressionNoIn 縺瑚ゥ穂セ。縺輔l繧九€�

NOTE ECMAScript 縺ォ縺翫¢繧� ConditionalExpression 縺ョ譁�ウ輔�縲� C 縺翫h縺ウ JAVA 縺ィ縺ッ闍・蟷イ逡ー縺ェ繧翫€� 2 縺、逶ョ縺ョ驛ィ蛻�シ上′ Expression 縺ァ縺ゅk縺薙→繧偵◎繧後◇繧瑚ィア蜿ッ縺吶k縺後€� 3 縺、逶ョ縺ョ蠑上′ ConditionalExpression 縺ァ縺ゅk縺薙→繧貞宛髯舌☆繧九€� ECMAScript 縺ォ縺翫¢繧九%縺ョ蟾ョ逡ー縺ッ縲� 莉」蜈・蠑上′縺ゥ縺。繧峨�譚。莉カ縺ォ繧ょキヲ蜿ウ縺輔l繧九%縺ィ繧定ィア蜿ッ縺励€∵キキ荵ア縺ィ荳ュ螟ョ蠑上′繧ォ繝ウ繝槫シ上〒縺ゅk繧医≧縺ェ縺ゅ∪繧頑э蜻ウ縺ョ縺ェ縺�こ繝シ繧ケ繧定€��縺励↑縺�%縺ィ繧貞虚讖溘→縺励※縺�k縲�

11.13 莉」蜈・貍皮ョ怜ュ� (Assignment Operators)

Syntax
AssignmentExpression :
ConditionalExpression
LeftHandSideExpression AssignmentOperator AssignmentExpression
AssignmentExpressionNoIn :
ConditionalExpressionNoIn
LeftHandSideExpression AssignmentOperator AssignmentExpressionNoIn
AssignmentOperator : one of
= *= /= %= += -= <<= >>= >>>= &= ^= |=
Semantics

AssignmentExpressionNoIn 逕滓�隕丞援縺ッ縲� AssignmentExpression 縺ィ蜷梧ァ倥↓隧穂セ。縺輔l繧九′縲� AssignmentExpression 縺ォ蜷ォ縺セ繧後k ConditionalExpression 縺ィ AssignmentExpression 縺ョ莉」繧上j縺ォ ConditionalExpressionNoIn 蜿翫� AssignmentExpressionNoIn 縺後◎繧後◇繧瑚ゥ穂セ。縺輔l繧九€�

11.13.1 蜊倡エ比サ」蜈・ (Simple Assignment) ( = )

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

  1. LeftHandSideExpression 繧定ゥ穂セ。縲�
  2. AssignmentExpression 繧定ゥ穂セ。縲�
  3. GetValue(Result(2)) 繧貞他蜃コ縺吶€�
  4. PutValue(Result(1), Result(3)) 繧貞他蜃コ縺吶€�
  5. Result(3) 繧定ソ斐☆縲�

11.13.2 隍�粋莉」蜈・ (Compound Assignment) ( op= )

@ 縺ョ縺ィ縺薙m縺ッ荳翫↓遉コ縺励◆貍皮ョ怜ュ舌�荳€縺、繧偵≠繧峨o縺咏函謌占ヲ丞援 AssignmentExpression : LeftHandSideExpression @ = AssignmentExpression 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. LeftHandSideExpression 繧定ゥ穂セ。縲�
  2. GetValue(Result(1)) 繧貞他蜃コ縺吶€�
  3. AssignmentExpression 繧定ゥ穂セ。縲�
  4. GetValue(Result(3)) 繧貞他蜃コ縺吶€�
  5. Result(2) 縺ィ Result(4) 縺ォ縲∵シ皮ョ怜ュ� @ 繧帝←逕ィ縺吶k縲�
  6. PutValue(Result(1), Result(5)) 繧貞他蜃コ縺吶€�
  7. Result(5) 繧定ソ斐☆縲�

11.14 繧ォ繝ウ繝樊シ皮ョ怜ュ� (Comma Operator) ( , )

Syntax
Expression :
AssignmentExpression
Expression , AssignmentExpression
ExpressionNoIn :
AssignmentExpressionNoIn
ExpressionNoIn , AssignmentExpressionNoIn
Semantics

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

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

ExpressionNoIn 逕滓�隕丞援縺ッ縲� Expression 逕滓�隕丞援縺ィ蜷梧ァ倥↓隧穂セ。縺輔l繧九′縲� Expression 縺ィ AssignmentExpression, 縺ョ莉」繧上j縺ォ縲√◎繧後◇繧� ExpressionNoIn 縺ィ AssignmentExpressionNoIn 縺瑚ゥ穂セ。縺輔l繧九€�

Page Contents

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