1

有人可以解释为什么这个 JavaScript 被解释为两种不同的方式吗?

这个:

var testnum = $("<div>00000001</div>").text();
var test = "claimid:" + + testnum;
alert(test);

这会引发一个警报,显示:claimid:1

这在哪里:

var testnum = $("<div>00000001</div>").text();
var test = "claimid:" + testnum;
alert(test);

这会引发一个警报,显示:claimid:00000001

我明白为什么第二个将 testnum 视为字符串,但为什么将 testnum 视为第一个的数字。

4

3 回答 3

4

你有两个加号。第二个加号是一元加号运算符,它在 Javascript 中的唯一目的是将其操作数转换为Number

于 2013-08-26T23:26:13.680 回答
1

但为什么它将 testnum 视为第一个数字。

请记住,在 JavaScript 中,+可以用作一元运算符来将字符串转换为数字。这就是你在这里的第二个加号:

var test = "claimid:" + + testnum;
//                      ^ HERE

在任何一种情况下,字符串连接的优先级都高于数字加法(如果适用),但第一种情况会将您的值转换00000001数字,这就是显示普通旧的原因1

于 2013-08-26T23:26:45.057 回答
1

在第一种情况下,+ 被解释为一元正运算符。考虑x = -5。- 是一元否定运算符。+ 接受一个值并返回其数值。

于 2013-08-26T23:27:26.213 回答