为什么1+ +“2”+3在JavaScript中评为6?

Why does 1+ +“2”+3 evaluate to 6 in JavaScript?

本问题已经有最佳答案,请猛点这里访问。

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


使用+"2"将字符串值("2")强制转换为一个数字,因此exrpession将评估为6,因为它本质上评估为1 + (+"2") + 3,而exrpession又评估为1 + 2 + 3

1
2
3
console.log(1 + +"2" + 3);
console.log(typeof"2");
console.log(typeof(+"2"));

如果不将两个+符号分隔开,它们将被解析为++运算符。


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


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

对于运算符优先级Mozilla开发人员链接


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

需要两个+操作符之间的空间,以避免与(前/后)增量操作符++混淆。

注意,强制转换是在加法之前完成的,因为一元运算符+的优先级大于加法运算符。见下表:https://developer.mozilla.org/en-us/docs/web/javascript/reference/operators/operator_precedence_table