关于js的toString和valueOf的调用问题

大家看StackOverFlow上的一个讨论,前两个答案没有看明白,大家有看懂的讲一下,我觉得第二个答案好像讲的不错。
链接:https://stackoverflow.com/que...

阅读 1.5k
1 个回答

+运算符规则:

  1. 两侧元素各自调用自身的valueOf方法得到leftValue和rightValue
  2. leftValue或rightValue 只要有一个是字符串,那么他们两个以字符串形式拼接,(特别注意此处说的是第一步valueOf的结果)
  3. 如果leftValue和rightValue都不是字符串,他们两个将转换成number进行计算。

附原题

var x = {toString: function() {return "foo"; },
         valueOf: function() {return 42; }};
window.console.log ("x="+x);  // x=42
window.console.log ("x="+x.toString()); //x=foo

"x=".valueOf() 为“x=", x.valueOf()为42, 因为”x=“是字符串,故42也转换成字符串与之拼接。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题