JavaScript为一个数字添加一个字符串

我正在阅读关于MDN上的JavaScript的重新介绍,以及Numbers中的部分,它表示只需在其前面添加一个加号运算符即可将字符串转换为数字。

例如:

+“42”,这将产生42的数字输出。

但是在关于运算符的章节中进一步说,通过向任何数字添加一个字符串“something”,您可以将该数字转换为字符串。 他们还提供了让我困惑的以下例子:

“3”+ 4 + 5可能会在输出中产生一串345,因为数字4和5也会被转换为字符串。

然而,3 + 4 +“5”不会像他们的例子中所述的那样产生12而不是75的字符串?

在关于运算符的章节中的第二个例子中,站在字符串“5”前面的+运算符不会将该字符串转换为数字5,然后将所有内容添加到等于12的位置?


你在说什么是一个加号。 它与用于字符串连接或添加的加号不同。

如果您想使用一元加号进行转换并将其添加到先前的值,则需要将其加倍。

> 3 + 4 + "5"
"75"
> 3 + 4 + +"5"
12

编辑:

您需要了解操作顺序:

+-具有相同的优先级并与左侧关联:

 > 4 - 3 + 5
 (4 - 3) + 5
 1 + 5
 6

+再次关联到左侧:

> 3 + 4 + "5"
(3 + 4) + "5"
7 + "5"
75

一元运算符通常比二元运算符具有更高的优先级:

> 3 + 4 + +"5"
(3 + 4) + (+"5")
7 + (+"5")
7 + 5
12

您也可以使用parseInt()或parseFloat(),如下所示:

> 1 + 2 + "3"
"33"
> 1 + 2 + parseInt(3)
6

我认为这比使用+“3”更清洁,但这只是我的看法。


答案可以在Ecma262.pdf第11.6.1节找到:

如果Type(lprim)是String或Type(rprim)是String,则a。 返回串联ToString(lprim)后跟ToString(rprim)的字符串。

因此,这将根据优先级解决所有操作,以便在找到任何数字后立即将该数字转换为字符串。

4 + 3 + "5"
"75"
4 + 3 + "5" + 3
"753"

阅读整个标准,去这里。

链接地址: http://www.djcxy.com/p/73939.html

上一篇: JavaScript adding a string to a number

下一篇: What does this symbol mean in JavaScript?