Javascript 如何在其他函数中使用局部变量
这是我的代码:Javascript 如何在其他函数中使用局部变量,javascript,Javascript,这是我的代码: var shuffle = function(x) { var deck = []; deck.push(x); return deck; }; var Placemat = function() { var card1 = deck.shift(); var card2 = deck.shift(); } 通过像这样在shuffle()中返回牌组,我可以在Placemat()中使用它吗?如果没有,我该怎么做?您不能,您必须将它们放在
var shuffle = function(x) {
var deck = [];
deck.push(x);
return deck;
};
var Placemat = function() {
var card1 = deck.shift();
var card2 = deck.shift();
}
通过像这样在
shuffle()
中返回牌组,我可以在Placemat()
中使用它吗?如果没有,我该怎么做?您不能,您必须将它们放在参数中或函数之外
var shuffle = function(x) {
var deck = [];
deck.push(x);
return deck;
};
var Placemat = function(deck) {
var card1 = deck.shift();
var card2 = deck.shift();
}
or
var deck = [];
var Placemat = function() {
var card1 = deck.shift();
car card2 = deck.shift();
}
是的,你可以。但无论何时调用
.shuffle()
,都会覆盖该数组,或者更准确地说,创建一个新实例。所以如果你想保留那份推荐信,你可以
var shuffle = (function() {
var deck = [];
return function(x) {
deck.push(x);
return deck;
};
}());
现在.shuffle()
通过返回另一个函数来关闭组。所以它看起来像
var Placemat = function() {
var myDeck = shuffle(5);
shuffle(10);
shuffle(15);
var card1 = deck.shift();
var card2 = deck.shift();
}
即使这可能不是最好的方式。但是我想我甚至不知道你到底想在那里实现什么。你可以在Placemat
中使用shuffle
的返回值,但它将始终是一个包含单个项的数组
如果希望有一个包含多个项的变量deck
,则需要在外部范围中声明deck
:
var deck = [];
var shuffle = function(x) {
deck.push(x);
return deck;
}
var Placemat = function() {
var card1 = deck.shift();
var card2 = deck.shift();
};
这样,shuffle
函数和Placemat
都使用相同的变量deck
我找到了另一个解决方案:
var shuffle = function(deck,x) {
var deck = [];
deck.push(x);
return deck;
};
var Placemat = function() {
var newdeck = shuffle(deck,x)
var card1 = newdeck.shift();
var card2 = newdeck.shift();
}
这样我就不必使deck
成为一个全局变量。谢谢大家的帮助。我不知道那个用户名bro。@Triptych——很公平,但你知道答案吗?应该是myDeck.shift()
?