現行版JavaScriptの仕様書は以下からPDFファイルをダウンロードしてください。

現行版っていうか、まあ、うん、現行版です。

演算子の仕様

==の場合

11.9.1 The Equals Operator ( == )

The production EqualityExpression : EqualityExpression == RelationalExpression is evaluated as follows:

  1. Let lref be the result of evaluating EqualityExpression.
  2. Let lval be GetValue(lref).
  3. Let rref be the result of evaluating RelationalExpression.
  4. Let rval be GetValue(rref).
  5. Return the result of performing abstract equality comparison rval == lval. (see 11.9.3).

===の場合

11.9.4 The Strict Equals Operator ( === )

The production EqualityExpression : EqualityExpression === RelationalExpression is evaluated as follows:

  1. Let lref be the result of evaluating EqualityExpression.
  2. Let lval be GetValue(lref).
  3. Let rref be the result of evaluating RelationalExpression.
  4. Let rval be GetValue(rref).
  5. Return the result of performing the strict equality comparison rval === lval. (See 11.9.6)

というわけで

演算子の直接の処理は、左右の値を評価してから別途内部的な=====に渡しているだけで、ほとんど同じ処理。それぞれについて確認する。

内部で利用されている同値評価アルゴリズム

(さらに…)