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

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

求解释 :console.log(1+ +"2");输出的是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在运算的时候如果两边类型不相符,会尝试转换

【热门文章】
【热门文章】