添加预期时,Javascript代码会产生连接吗?

时间:2016-05-10 03:57:11

标签: javascript

    var var1;
    var var2;

    var1 = readCookie('cookie_name');

    var2 = +var1 + 1;

    alert(var1);
    alert(var2);

JS的上述片段令我感到困惑。除非我对“+ var1”的变通方法进行编码,否则结果为“11”而不是2(假设var1 = 1且var2 = 1)。所以我似乎得到某种连接而不是添加。我唯一的想法是,这必须与var1是从cookie导入的值这一事实有关。或者它是JS中的一个错误。或者我发疯了。随便挑选。

6 个答案:

答案 0 :(得分:1)

除非您需要保留var1的原始版本,并且只要您总是添加一个,请考虑替代方法

var1++

这会将值强制转换为数字,并为其添加一个。

答案 1 :(得分:0)

+var2在变量执行操作之前执行数字转换。(+)运算符。所以+var1+1将为2.否则此

var1 = readCookie('cookie_name');

可能是一个值为1的字符串,并且添加了字符串&号码将生成11

答案 2 :(得分:0)

猜测readCookie('cookie_name')正在返回String。尝试:

var1 = parseInt(readCookie('cookie_name'));

要将var1作为int,但您可能需要尝试以下方法进行清理。

var var1 = parseInt(readCookie('cookie_name'));
var var2 = var1 + 1;

alert(var1); // should be the value of the cookie or 0
alert(var2);

编辑:根据已修改的问题进行的更改。现在也更有意义:]

答案 3 :(得分:0)

如果您确定var1包含数字表达式,那么您可以使用:

var2 = Number(var1) + 1;
alert(var2);

答案 4 :(得分:0)

检查是否是一个数字。如果是数字,则将其更改为数字,方法是将其传递给数字函数。

var var1;
var var2;

var1 = readCookie('cookie_name');

var1 = var1.isNaN()?var1:Number(var1); 

var2 = var1 + 1; //instead of your Code (+var1 + 1)
alert(var1);
alert(var2);

答案 5 :(得分:-1)

尝试将var2解析为整数,问题就会解决。

试试这个。

var1 = paresInt (+ var2)+ 1;