次の式の値を計算します。
[''] == false
まず、2つのオペランドはオブジェクトタイプとブールタイプです。図1によると、ブール型を数値タイプに変換する必要があり、falseを数値に変換した結果は0であるため、式は次のようになります。
[''] == 0
2つのオペランドは、オブジェクトタイプと数値タイプになります。図1によると、オブジェクトタイプは元のタイプに変換する必要があります。
最初に、[] .valueof()を呼び出します。配列のvalueof()メソッドはそれ自体を返すため、結果は元のタイプではありません。 [] .toString()を呼び出し続けます。
配列の場合、toString()メソッドのアルゴリズムは、各要素を文字列型に変換し、コンマと順番に連結するため、最終結果は空の文字列であり、これは元のタイプの値です。
この時点で、式は次のようになります。
'== 0
2つのオペランドは、文字列タイプと数値タイプになります。図1によると、文字列タイプを数字に変換する必要があります。前述のように、空の文字列は多くの0になります。したがって、式は次のようになります。
0 == 0
これまでのところ、2つのオペランドのタイプは最終的に同じであり、結果は明らかに真実です。