Javascript变量不添加,仅作为字符串连接
我有一些简单的代码,应该添加两个数字,它似乎一直在添加它们,也就是说,如果我有一个初始化为0的变量,我添加100一次,然后添加200,它似乎添加如下0+100+100+200,返回400而不是300。我如何才能正确地添加此内容Javascript变量不添加,仅作为字符串连接,javascript,string,math,Javascript,String,Math,我有一些简单的代码,应该添加两个数字,它似乎一直在添加它们,也就是说,如果我有一个初始化为0的变量,我添加100一次,然后添加200,它似乎添加如下0+100+100+200,返回400而不是300。我如何才能正确地添加此内容 function calcScores(amount) { amount = parseInt(amount,10); for(var key in teamSelection) { if (teamSelection[key]['Sele
function calcScores(amount) {
amount = parseInt(amount,10);
for(var key in teamSelection) {
if (teamSelection[key]['Selected']) {
score = parseInt(teamSelection[key]['Score'],10);
var total = +score + +amount;
teamSelection[key]['Score'] = total;
}
}
}
这句话让我很困惑。如果要将分数和金额添加到总数中,请使用
var total += score + amount;
你应该尝试在没有其他因素的情况下,在较小的范围内重现问题。大多数情况下,通过将有问题的代码片段简化为琐碎的内容,问题变得显而易见 您还应该在问题中包括实际输出与预期输出 现在,我所能做的就是指出代码中的两个可疑部分: parseInt可以返回NaN或未定义。你不能处理这些案子 total=+score++amount有几个额外的加法符号,这应该不会有任何区别,但嘿,这是javascript。也许总数+=分数+金额
如果您需要更多帮助,您必须将问题缩小到特定的范围:\此代码生成此输出,而不是此其他输出。那么现在是将它们串联起来,还是仅仅因为加法的结果不正确(虽然是数值的)?在循环的每次迭代中都会添加数量。金额的价值是多少?如果有5个分数,您将得到的总和将是分数加金额*5金额和分数的总和,因此删除+分数++金额中的额外加号,将其更改为此分数+金额。不确定这是否是问题所在,但这不是必需的,而且一行中的两个++符号至少可能会造成混淆。提供的代码似乎适用于基本数据集。您肯定在其他地方发生了其他事情。@dc5我认为您是对的,因为我在JSFIDLE上也尝试过它,它似乎工作得很好。它可能与使用.bind'click',函数{//somestuff}有关,其中somestuff调用另一个函数,该函数中有一个bind/click。有什么办法可以追踪到它,比如说,什么东西可能会被圈起来?谢谢你可以看看这个来了解这一切:它可能看起来很有趣,但它的存在是出于迷信,因为这里的值已经是数字,可以强制执行数字+运算。我同意这是没有必要的,但它不会伤害任何东西。谢谢你的澄清!JavaScript被随机破坏的观点是不正确的。多余的一元+运算符不会造成任何伤害。
var total += score + amount;