有人可以解释为什么这种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视为第一个数字。
答案 0 :(得分:4)
你有两个加号。第二个加号是unary plus operator,在Javascript中,其唯一目的是将其操作数转换为Number。
答案 1 :(得分:1)
但为什么它会将testnum视为第一个数字。
请记住,在JavaScript中,+
可以用作一元运算符,将字符串转换为数字。这就是你在这里用第二个加号:
var test = "claimid:" + + testnum;
// ^ HERE
在任何一种情况下,字符串连接的优先级高于数字加法(如果适用),但第一种情况将00000001
的值转换为数字,这就是为什么平原显示旧1
。
答案 2 :(得分:1)
在第一种情况下,+被解释为一元正算子。考虑x = -5
。 - 是一元负面运算符。 +获取一个值并返回其数值。