由于偶然的错字,我遇到了一种我无法解释的行为。
当我有
时var text = "abc";
text += + "";
text
变量突然变为abc0
。
有人可以就此提供任何见解吗?
答案 0 :(得分:48)
+ ""
评估为0
。这是因为为了应用一元加号运算符,""
被强制转换为一个数字 - 与Number("")
相同,如果字符串为空或空白,则会生成0
。 / p>
当您在字符串+
中“添加”(+=
或在此情况下为0
)数字"abc"
时,它会被强制转换为字符串{{1导致"0"
。
来自spec:
StringNumericLiteral为空或仅包含空格,将转换为+0。
答案 1 :(得分:10)
答案 2 :(得分:1)
来自:http://xkr.us/articles/javascript/unary-add/
在JavaScript中,可以在单个元素之前单独使用+运算符。这表示数学运算并尝试将元素转换为数字。如果转换失败,它将评估为NaN。当想要快速将字符串转换为数字时,这尤其有用,但也可以在其他类型的选择集上使用。