Javascript 在JS中查找类型转换规则

Javascript 在JS中查找类型转换规则,javascript,casting,Javascript,Casting,我正在寻找一套具体的规则,以确定什么时候自动进行类型转换。我正试图为新开发人员提供一些指导,例如,刚刚提出: 90 > '100' // int compare '90' > 100 // int compare '90' > '100' // string compare 至于为什么,我能想到的唯一答案是“因为”:请注意,'026'

我正在寻找一套具体的规则,以确定什么时候自动进行类型转换。我正试图为新开发人员提供一些指导,例如,刚刚提出:

90 > '100'   // int compare
'90' > 100   // int compare
'90' > '100' // string compare

至于为什么,我能想到的唯一答案是“因为”:

请注意,
'026'<24
在某些浏览器中可能会返回true,因为字符串被视为八进制数(在本例中为22)

理想情况下,您希望始终手动键入cast。使用
a=''+a
转换为字符串,或
a=parseInt(a,10)转换为整数


这应该是解释,而不是试图解释自动类型转换

注意,
'026'<24
在某些浏览器中可能会返回true,因为字符串被视为八进制数(在本例中为22)

理想情况下,您希望始终手动键入cast。使用
a=''+a
转换为字符串,或
a=parseInt(a,10)转换为整数

这应该是解释,而不是试图解释自动类型转换如果你真的想了解发生了什么,那么你应该阅读规范:

关于下列事项的说明:

类型(x)用作“x类型”的简写

如果您真的想了解发生了什么,那么您应该阅读规范:

关于下列事项的说明:

类型(x)用作“x类型”的简写


了解这些规则会很有趣,但我的指导原则是永远要明确。如果希望字符串被视为int,请将其设为int。如果没有其他原因,除了可读性。了解这些规则会很有趣,但我的指导原则是要始终明确。如果希望字符串被视为int,请将其设为int。如果不是因为可读性以外的原因,也可以使用
a^0
a*1
,如果您为;)@JuicyScript为什么不仅仅是
+a
?如果您为;)做事情,也可以使用
a^0
a*1
)@JuicyScript为什么不干脆
+a