Symbol.toPrimitive
JavaScript Weekly で取り上げられていたライブラリで知った
https://github.com/irony/aspipes?tab=readme-ov-file#how-the-magic-works
| は JavaScript においてはビット演算子のひとつ
演算される前に右辺左辺のプリミティブ値評価を行い型変換が行われる
これが、Symbol.toPrimitive
a | b の a は toPrimitive -> toNumber -> toInt32 といった型変換が行われる
ミニマムで動作原理が示せるのは以下:
code:toprimitive.js
const obj = {
Symbol.toPrimitive() {
console.log('Symbol.toPrimitive called.')
return 0
}
}
obj | 1
ビット演算より先に Symbol.toPrimitiveの呼び出しがあるのでlog出力されてから 0 | 1 の結果が返される