Javascript不返回值

时间:2013-08-27 21:45:45

标签: javascript return

我正在尝试编写一个简单的函数(checkCard),它检查由另一个函数创建的随机卡是否已被使用。以下是拨打电话的地方:

var uC;
// some code including creating the random card
checkCard(card, pCards, dCards, uC);
// uC becomes unidentified here

这是checkCard本身:

function checkCard(card, pCards, dCards, uC) {
    var tCards = pCards.concat(dCards), // an array containing all cards which are in use already
    i;
    for (i = 0; i < tCards.length; i = i + 1) {
        if (card.suit === tCards[i].suit && card.type === tCards[i].type) {
            uC = true; // card is in use already
            break;
        } else {
            uC = false; // card is not in use
        }
    }
    // it still works here: uC is either true or false
    return uC;
}

}

不知怎的,它只是不起作用:checkCard正确计算uC并且它在“return uC”之前保持值“true”或“false”。但在回到原来的功能后,uC变得“不明”。我做错了什么?

提前致谢!

2 个答案:

答案 0 :(得分:1)

该函数不会修改传递给函数的变量uC,而是修改它的本地副本。您必须从返回中捕获uC:

uC = checkCard(card, pCards, dCards);

由于您要返回变量,因此不需要将其作为参数传递,然后您将在函数中创建局部变量。

function checkCard(card, pCards, dCards) {
   var uC;
   ....}

答案 1 :(得分:0)

在原始代码中,您需要

uC = checkCard(card, pCards, dCards, uC);

或者在函数调用中没有传递uC - 如果你把它关掉它将继续是一个全局变量,而你在uC中的方式是{{1}} function是一个局部变量。