大家都知道在JavaScript中如何使用基本的字符串拼接:
> "Hello " + "World!"
'Hello World!'
但是,如果我们使用 + +
而不是 +
会发生什么?我遇到了以下奇怪的行为:
> "Hello " + + "World!"
'Hello NaN'
> "Hello " + + ""
'Hello 0'
从上面的例子中,我可以看到第二个字符串被转换为数字。因此,如果传递一个具有
valueOf
属性作为函数的对象,则将转换为该函数返回的值。> "Hello " + + ({valueOf: function () {return 1; }})
'Hello 1'
正如预期的那样,它显示"Hello 1"
。
第二个字符串为什么要转换成Number
?为什么不抛出语法错误之类的东西呢?
++
(+ <空格> +
)。 - Ionică Bizău