有人可以告诉我JavaScript中的表达式1+ +"2"+3
为何产生6
以及为什么产生数字吗?我不明白如何在两个+
运算符之间引入单个空格来将字符串转换为数字。
答案 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”转换为数字(根据运算符优先级),然后将所有这些相加。
答案 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