Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript变量不添加,仅作为字符串连接_Javascript_String_Math - Fatal编程技术网

Javascript变量不添加,仅作为字符串连接

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

我有一些简单的代码,应该添加两个数字,它似乎一直在添加它们,也就是说,如果我有一个初始化为0的变量,我添加100一次,然后添加200,它似乎添加如下0+100+100+200,返回400而不是300。我如何才能正确地添加此内容

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;