我試圖理解文檔Ecma-262
的部分7.2.12
後面的表達式{} == true
。如何理解表達式「{} == true」?
- 如果Type(y)爲布爾型,返回的比較
x == ToNumber(y)
的ToNumber(true)
結果是1
,然後
的結果{} == 1
- 如果Type(x)是Object且Type(y)是String,Number或Symbol,則 會返回比較結果
ToPrimitive(x) == y
。
我在現在的ToPrimitive({})
困惑。
如果提示是 「字符串」,然後
一個。讓methodNames成爲«「toString」,「valueOf」»。
否則,
a。讓methodNames是«「valueOf」,「toString」»。
應該ToPrimitive({})
被解釋爲{}.toString()
或{}.valueOf()
?
假設toString()
被調用。
如果Type(x)是字符串和類型(y)爲號, 返回比較
ToNumber(x) == y
的結果,所以{} == true
可能是ToNumber(ToPrimitive({})) == ToNumber(true)
?
'methodNames'列表是優先列表 – Hacketo
「*有人可以提供更多詳細信息*」對於SO聽起來太寬泛了。你想知道什麼? – Bergi
@Bergi我從'Dmitri Pavlutin'的答案得到一些細節。你是對的,我會更新我的問題。 – zangw