javascript隐式转换
2019-08-05 10:25:04 0 举报
javascript 比较的隐式转换规则
作者其他创作
大纲/内容
类型相同且不是number类型
ToPrimitive
ToPrimitive的第一个入参,记为p_input,第二个入参记为p_type
执行exoticToPrim(https://tc39.github.io/ecma262/#sec-call)
否
是
nx=ToNumber(px)ny=ToNumber(py)
y
x
nx为正无穷或者ny为负无穷
return false
return true
px是否为py的前缀
TypeError
x是null,y是undefined或者x是undefined,y是null
通过ToPrimitive转换object类型的项,ToPrimitive(y)
number
优先调用p_input的valueOf函数,如果结果仍是对象,则调用toString函数,最终将结果返回
都是symbol类型
都是null
reutn true
都是undefined
优先调用p_input的toString函数,如果结果仍是对象,则调用valueOf函数,最终将结果返回
type(x)和type(y)都是string类型
reutn false
将处理后的两个值再次进行弱相等
hint为default
两个比较值的另一个y
nx=+0;ny=-0或者nx=-0;ny=+0
hint为string
是否相同
值相同
返回的结果是否为Object
leftFirst
nx为负无穷或者ny为正无穷
sameValueNonNumber
弱比较
是否值相同
type(x)是boolean或者type(y)是boolean
两个比较值的其中一个x
m=px[k]n=py[k]
将boolean类型的项,通过ToNumber尝试转变为number类型
hint为number
return undefined
exoticToPrim是否为undefined
type(x)
p_type的值
x为+0;y为-0或者x为-0;y为+0
弱相等
nx和ny值相等
return 上一步返回的结果
nx<ny
x<y
m<n
exoticToPrim为p_input的@@toPrimitive属性的值
type(y)
type(x)和type(y)是否一样
将string类型的项,通过ToNumber尝试转变为number类型
将hint设置为number
hint是否为default
x或者y为NaN
type(x)为number
return p_input
true
都是string类型
都是object类型
type(x)是string,type(y)是number或者type(x)是number,type(y)是string
string
hint的值
都是boolean类型
py是否为px的前缀
是否对象
执行严格相等
寻找某个索引k,使px[k]不等于py[k]
严格相等(强相等)
其他
nx或者ny是否有一个是NaN
0 条评论
下一页