为什么 javascript console.log(1 + + " " + 3);句子 returns 4 而不是“1 3”?
Why javascript console.log(1 + + " " + 3); sentence returns 4 and not "1 3"?
当语句 console.log(1 + + " " + 3);
在 Chrome 控制台中执行时,结果是 4
而不是我期望的 "1 3"
。
谁能解释一下为什么会这样?
这种行为称为强制。
在这种情况下 unary plus operator +
converts to number the expression at the right. If it cannot parse a particular value, it will evaluate to NaN。
+ " " //--> is coerced to 0
你可以在这个 Gist 中看到一些强制转换的例子:
JavaScript Coercion
如果您只是将问题分解成多个组成部分并在控制台中输入 +" "
,您会看到它的计算结果为 0
。 1+3+0
是 4
.
对语句求值时会进行以下操作:
1 // one
+ // add
+ " " // implicitly convert " " to a number (0)
+ // add
3 // three
所以基本上 1 + 0 + 3
。没有字符串进入此计算。预先转换为数字。
本例中的 +
运算符是 一元 +
(参见“强制转换”)。
当语句 console.log(1 + + " " + 3);
在 Chrome 控制台中执行时,结果是 4
而不是我期望的 "1 3"
。
谁能解释一下为什么会这样?
这种行为称为强制。
在这种情况下 unary plus operator +
converts to number the expression at the right. If it cannot parse a particular value, it will evaluate to NaN。
+ " " //--> is coerced to 0
你可以在这个 Gist 中看到一些强制转换的例子: JavaScript Coercion
如果您只是将问题分解成多个组成部分并在控制台中输入 +" "
,您会看到它的计算结果为 0
。 1+3+0
是 4
.
对语句求值时会进行以下操作:
1 // one
+ // add
+ " " // implicitly convert " " to a number (0)
+ // add
3 // three
所以基本上 1 + 0 + 3
。没有字符串进入此计算。预先转换为数字。
本例中的 +
运算符是 一元 +
(参见“强制转换”)。