为什么这个JavaScript有两种不同的解释方式?

时间:2013-08-26 23:24:15

标签: javascript

有人可以解释为什么这种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视为第一个数字。

3 个答案:

答案 0 :(得分:4)

你有两个加号。第二个加号是unary plus operator,在Javascript中,其唯一目的是将其操作数转换为Number

答案 1 :(得分:1)

  

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

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

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

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

答案 2 :(得分:1)

在第一种情况下,+被解释为一元正算子。考虑x = -5。 - 是一元负面运算符。 +获取一个值并返回其数值。