一个奇怪的问题,求老司机解答
直接上图 最近回顾犀牛书的时候看到这个问题,书上写的比较抽象,想知道
- ‘+’和’-’运算符有什么区别?
- '+'运算符转string优先还是number优先?
谢谢💪💪
2 回复
就好像这样
console.log(1 + "1") // 11
console.log(1 - "1") // 0
看着情况
好像是这样:
- +运算符: 全是number类型,直接运算,如果不是,那么toString
- -运算符: 把各项转成数字,在减
坐等楼下列出规范
这种事,直接找源码就好了。
首先, + 或 - ,都是转成 Object
处理的: https://github.com/v8/v8/blob/eff39bbb70e92dd8115f1ac8e3b48b5c53ad0a35/src/runtime/runtime-operators.cc#L39
然后, + 和 - ,的具体处理,逻辑上本来就不同:https://github.com/v8/v8/blob/f2bd913cd459854894447f5422a953d23fa4e7ba/src/objects.cc#L666
可以看到, -
只是单纯的转成数字,而 +
则涉及字符串连接。
v8 的实现是这样的。
我不熟悉 v8 的源码,只是随便搜索了一下。