Javascript中的复合赋值导致NaN

Javascript中的复合赋值导致NaN,javascript,Javascript,我试图让复合赋值在Javascript中的循环中工作,但这让我感到不安,我不知道为什么,因为我对Javascript还是相当陌生。我实际上是在尝试将其转换为jQuery验证自定义方法: 这是我到目前为止所拥有的 // Taken from https://github.com/pfwd/NHSNumber-Validation var multipliers = {1:10, 2:9, 3:8, 4:7, 5:6, 6:5, 7:4, 8:3, 9:2};

我试图让复合赋值在Javascript中的循环中工作,但这让我感到不安,我不知道为什么,因为我对Javascript还是相当陌生。我实际上是在尝试将其转换为jQuery验证自定义方法:

这是我到目前为止所拥有的

        // Taken from https://github.com/pfwd/NHSNumber-Validation
        var multipliers = {1:10, 2:9, 3:8, 4:7, 5:6, 6:5, 7:4, 8:3, 9:2};
        var currentSum, currentNumber, currentMultiplier = 0;

        //Get submitted NHS Number and remove whitespace
        var givenNumber = value.replace(/\s+/g, '');

        // Get length
        var numberLength = givenNumber.length;
        console.debug(givenNumber);
        console.debug(numberLength);

        // Number must be 10 digits in length
        if (numberLength !== 10) {
            return false;
        }

        // Check number
        var checkNumber = value.substring(9);
        console.debug(checkNumber);

        // Loop over each number in the string and calculate the current sum
        for (var i = 0; i <= 8; i++) {
            var minus = i-1;
            var plus = i+1;
            currentNumber = value.charAt(i);
            currentMultiplier = multipliers[plus];
            currentSum += (currentNumber * currentMultiplier);
            console.debug("i is " + i + " & current Num: " + currentNumber + " plus current multi: " + currentMultiplier + " plus " + currentSum);
        }

        var remainder = currentSum % 11;
        var total = 11 - remainder;
        console.debug(currentSum);
我也尝试过同样的结果:

currentSum = currentSum + (currentNumber * currentMultiplier);
不正确,仅初始化currentMultiplier

应该是

var currentSum, currentNumber, currentMultiplier;
currentSum =  currentNumber = currentMultiplier = 0;

演示:

var x;x+=0;//NaN
谢谢,这解决了我的问题,如果允许的话,我会接受它作为当前的答案。我想在我还在学习的时候,我不应该试着变得聪明,哈哈
var currentSum, currentNumber, currentMultiplier = 0;
var currentSum, currentNumber, currentMultiplier;
currentSum =  currentNumber = currentMultiplier = 0;