面试题答案
一键面试result1
的计算过程:- 首先,
a + 1
是加法运算。在 JavaScript 中,当对象与数字进行加法运算时,会进行隐式类型转换。 - 按照隐式转换规则,会先调用对象的
valueOf
方法获取原始值。这里a
的valueOf
方法返回2
。 - 然后进行
2 + 1
的运算,最终result1
的值为3
。
- 首先,
result2
的计算过程:1 + a
同样是加法运算。- 由于加法运算符左右两边类型不一致(左边是数字,右边是对象),会对对象
a
进行隐式类型转换。 - 还是先调用
a
的valueOf
方法,这里a
的valueOf
方法返回2
。 - 接着进行
1 + 2
的运算,所以result2
的值也为3
。
- 运算符优先级:
- 在这两个表达式中,加法运算符是左结合的,不存在其他优先级更高的运算符干扰。主要是对象
a
在与数字相加时,会按照 JavaScript 的隐式类型转换规则先调用valueOf
方法获取原始值,再进行加法运算。
- 在这两个表达式中,加法运算符是左结合的,不存在其他优先级更高的运算符干扰。主要是对象
所以,result1
和 result2
的值都为 3
。