为什么JavaScript中1+ +“ 2” +3的结果为6?

时间:2018-09-14 06:28:32

标签: javascript

有人可以告诉我JavaScript中的表达式1+ +"2"+3为何产生6以及为什么产生数字吗?我不明白如何在两个+运算符之间引入单个空格来将字符串转换为数字。

4 个答案:

答案 0 :(得分:6)

使用+"2"将字符串值("2")转换为数字,因此表达式的求值为6,因为它本质上求值为1 + (+"2") + 3,而求值{ {1}}。

1 + 2 + 3

如果您不将两个console.log(1 + +"2" + 3); console.log(typeof "2"); console.log(typeof(+"2"));符号隔开,它们将被解析为+(增量值)运算符。

答案 1 :(得分:1)

很简单,首先将字符串+“ 2”转换为数字(根据运算符优先级),然后将所有这些相加。

对于运算符优先级https://developers.google.com/analytics/devguides/reporting/core/dimsmets#view=detail&group=platform_or_device

答案 2 :(得分:1)

 1+ +"2"+3 results 6
 1+"2"+3 results "123"
AS The unary + operator converts its operand to Number type.

答案 3 :(得分:0)

+"2"是将字符串"2"强制转换为数字2的一种方法。剩下的只是一个简单的加法。

需要两个+运算符之间的空间,以避免与(pre / post)增量运算符++混淆。

请注意,强制转换在加法之前完成,因为一元运算符+的优先级大于加法运算符。请参阅此表:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table