在嵌套 for 循环中具有未定义变量的函数

Function having undefined variable in nested for loop

当我运行这个的时候,它声称x是undefined on the on the line with the for loop.

完整代码:

function getCustomerNumbers() {
    var customerNumbers = [];
    customerNumbers.push(12, 17, 24, 37, 38, 43);
    return customerNumbers;
}
function getWinningNumbers() {
    var winningNumbers = [];
    winningNumbers.push(12, 17, 24, 37, 38, 43);    
    return winningNumbers;
}
function checkNumbers(x, y) {    
    var matches = 0;
    for (i=0; i<x.length; i++) {
        for (j=0; j<y.length; j++) {
            if (x[i] == y[j]) {
                matches++;
            }
        }
    }
    return matches;
}
function displayResult() {
    checkNumbers(getWinningNumbers(), getCustomerNumbers())
    alert("This Week's Winning Numbers are:\n\n" + getWinningNumbers().toString() + 
    "\n\nThe Customer's Number is:\n\n" + getCustomerNumbers().toString() + "\n\nNumber of Matches:" + checkNumbers());
}
function init() {
    displayResult();
}
window.onload = init;

稍后 运行s,数组进入值 x 和 y。它 运行 当它只是 x 作为一个数组和一个 for 循环时很好。

有人知道这里出了什么问题吗?

您发布的代码仍然缺少某些内容,因为缺少第一个 function

我发现的下一件事是对 checkNumbers 的第二次调用没有传递任何东西。

function displayResult() {
    checkNumbers(getWinningNumbers(), getCustomerNumbers())
    alert("This Week's Winning Numbers are:\n\n" + getWinningNumbers().toString() + 
    "\n\nThe Customer's Number is:\n\n" + getCustomerNumbers().toString() + "\n\nNumber of Matches:" + checkNumbers()); //<-- where are the parameters?
}

工作代码:

function getCustomerNumbers(){
var customerNumbers = [];
    customerNumbers.push(12, 17, 24, 37, 38, 43);
    return customerNumbers;
}
function getWinningNumbers() {
    var winningNumbers = [];
    winningNumbers.push(12, 17, 24, 37, 38, 43);    
    return winningNumbers;
}
function checkNumbers(x, y) {    
    var matches = 0;
    for (var i=0; i<x.length; i++) {
        for (var j=0; j<y.length; j++) {
            if (x[i] == y[j]) {
                matches++;
            }
        }
    }
    return matches;
}

function displayResult() {    
    alert("This Week's Winning Numbers are:\n\n" + getWinningNumbers().toString() + 
    "\n\nThe Customer's Number is:\n\n" + getCustomerNumbers().toString() + "\n\nNumber of Matches:" + checkNumbers(getWinningNumbers(), getCustomerNumbers())
         );
}

displayResult();

您正在调用 checkNumbers 两次 - 第一次为 xy 传递有效值,第二次没有传递任何值

function displayResult() {
    // Good, but ignores result
    checkNumbers(getWinningNumbers(), getCustomerNumbers()) 
    //Nothing passed in
    alert("This Week's Winning Numbers are:\n\n" + getWinningNumbers().toString() + 
    "\n\nThe Customer's Number is:\n\n" + getCustomerNumbers().toString() + "\n\nNumber of Matches:" + checkNumbers()); 
}