Javascript没有';t返回值
我正在尝试编写一个简单的函数(checkCard),它检查由另一个函数创建的随机卡是否已经在使用中。这里是拨打电话的地点: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
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不会修改原始变量(不是指针)