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()