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