求解释 :console.log(1+ +"2");输出的是3

求解释 :console.log(1+ +"2");输出的是3

阅读 5.9k
3 个回答

等同于: 1+(+'2')
+'2'+ 是一元操作符,对 '2' 进行Number()操作,转为数字的2,所以等于3


对于非数值应用一元操作符,该类型会像Number()转型函数一样对这个值执行转换。《JavaScript高级程序设计P38》


http://javascript.ruanyifeng.com/grammar/conversion.html
2.3 自动转换为数值 当JavaScript遇到预期为数值的地方,就会将参数值自动转换为数值,转换规则与“强制转换为数值”相同。

除了加法运算符有可能把运算子转为字符串,其他运算符都会把两侧的运算子自动转成数值。

'5' - '2' // 3
'5' * '2' // 10
true - 1  // 0
false - 1 // -1
'1' - 1   // 0
'5'*[]    // 0
false/'5' // 0
'abc'-1   // NaN

上面都是二元算术运算符的例子,JavaScript的两个一元算术运算符——正号和负号——也会把运算子自动转为数值。

+'abc' // NaN
-'abc' // NaN
+true // 1
-false // 0

2被前边的加号转换了。应该是js在运算的时候如果两边类型不相符,会尝试转换

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