我使用JavaScript有点,在工作时遇到了一个非常奇怪的案例,我花了一些时间在项目中修复了这个问题,但是我也可以复制。
问题是关于通过串联在多行上解析字符串。
我的测试用例如下:
> var a = "s1"
undefined
> var b = "s2"
undefined
> a + b
's1s2'
> a+
... +b
's1NaN'
> a++b
SyntaxError: Unexpected identifier
(其中第二个基本上是单个命令,a ++ b,在a +和+ b之间有换行符)。
第二个测试用例的行为不应该与第三个测试用例完全一样吗?Chrome 39和Firefox 34中都会发生这种情况。
这种行为是否符合标准?我是否错过了明显的东西,以至于我没有考虑?
a+
+b
实际上被视为
a + (+b)
由于b
不是数字,因此一元+运算符将的数值b
指定为NaN
。
在最后一种情况下,a++b
其评估为(a++)b
。由于JavaScript在++
运算符之后不期望任何内容,因此它会因错误而失败
SyntaxError: Unexpected identifier
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句