Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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没有';t返回值_Javascript_Return - Fatal编程技术网

Javascript没有';t返回值

Javascript没有';t返回值,javascript,return,Javascript,Return,我正在尝试编写一个简单的函数(checkCard),它检查由另一个函数创建的随机卡是否已经在使用中。这里是拨打电话的地点: var uC; // some code including creating the random card checkCard(card, pCards, dCards, uC); // uC becomes unidentified here 这是支票卡本身: function checkCard(card, pCards, dCards, uC) { va

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

var uC;
// some code including creating the random card
checkCard(card, pCards, dCards, uC);
// uC becomes unidentified here
这是支票卡本身:

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;
}
功能检查卡(卡、pCards、dCards、uC){
var tCards=pCards.concat(dCards),//包含所有已在使用的卡的数组
我
对于(i=0;i
}

不知何故,它就是不起作用:checkCard正确地计算uC,并且它在“返回uC”之前保留值“true”或“false”。但在返回到原始功能后,uC变得“不明”。我做错了什么


提前谢谢

在原始代码中,您需要

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

或者,不要在函数调用中传递
uC
——如果禁用它,它将继续是一个全局变量,而在函数中执行
uC
的方式是一个局部变量。

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

uC = checkCard(card, pCards, dCards);
因为您返回的是变量,所以不需要将其作为参数传入,然后在函数中创建局部变量

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

您似乎没有将返回值分配给任何对象……并且您不需要将
uC
作为参数传递,不是吗?或者您不需要将uC作为参数传递?如果OP没有这样做,那么uC将是一个全球性的组织。我应该把它放在我的答案中。你不需要-它会拾取全局
uC
变量。我的意思是。。你不需要明确地说。。但你必须这样做,没有人希望全局变量(像这个)在应用程序中随处可见。如果你不把它作为参数传入,你就不必返回它。@Grim。。。扩展了我的answerSure-但如果您不声明它,它将保持全局,原始代码将正常工作(无需返回
uC
变量或发送它)。@Grim。。。是的,这是另一个选择。我想更多地关注为什么参数uC不会修改原始变量(不是指针)