新行及其在Javascript中字符串连接中的作用

时间:2015-01-14 13:37:06

标签: javascript string string-concatenation

有点我使用JavaScript并且在工作时遇到了一个非常奇怪的情况,有一点时间,我已经修复了我的项目,但我也可以复制。

问题在于通过连接解析多行上的字符串。

我的测试用例如下:

> var a = "s1"
undefined
> var b = "s2"
undefined
> a + b
's1s2'
> a+
... +b
's1NaN'
> a++b
SyntaxError: Unexpected identifier

(其中第二个基本上是一个命令,一个++ b,在+和+ b之间有换行符。)

第二个测试用例的行为应该与第三个测试用例完全相同吗? 这在Chrome 39和Firefox 34中都会发生。

此行为是否符合标准?我错过了一些我没想过的东西吗?

1 个答案:

答案 0 :(得分:2)

a+
+b

实际上被视为

a + (+b)

由于b不是数字,因此b的数值由{one} +运算符给出NaN

在最后一种情况下,a++b,它被评估为(a++)b。由于JavaScript在++运算符之后不期望任何内容,因此它失败并显示错误

SyntaxError: Unexpected identifier