Symbol.toPrimitive
演算される前に右辺左辺のプリミティブ値評価を行い型変換が行われる
これが、Symbol.toPrimitive
a | b の a は toPrimitive -> toNumber -> toInt32 といった型変換が行われる
ミニマムで動作原理が示せるのは以下:
code:toprimitive.js
const obj = {
console.log('Symbol.toPrimitive called.')
return 0
}
}
obj | 1
ビット演算より先に Symbol.toPrimitiveの呼び出しがあるのでlog出力されてから 0 | 1 の結果が返される