Javascript 如何访问函数中的数组?

Javascript 如何访问函数中的数组?,javascript,scope,Javascript,Scope,--解决-- 当我在一个网站上运行此程序时,第一个警报起作用,但第二个警报会留下一条错误消息,说deck未定义,我也尝试过其他编写此程序的方法,但都不起作用,我如何在函数中访问此数组 这个想法是,这是一个21点游戏,当我运行函数newGame时,它会检查剩余的“卡”是否少于21张。如果是这样的话,它会通过将牌组重置为开始时的状态来“洗牌”: function newGame() { if (deck.length <= 20) { var deck = [1, 2,

--解决--

当我在一个网站上运行此程序时,第一个警报起作用,但第二个警报会留下一条错误消息,说deck未定义,我也尝试过其他编写此程序的方法,但都不起作用,我如何在函数中访问此数组

这个想法是,这是一个21点游戏,当我运行函数newGame时,它会检查剩余的“卡”是否少于21张。如果是这样的话,它会通过将牌组重置为开始时的状态来“洗牌”:

function newGame() {
    if (deck.length <= 20) {
        var deck = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
    }
}
函数newGame(){
如果(甲板长度
var甲板=[1,2,3,4,5,6,7,8,9,10,10];
函数getDeck(){
对于(变量i=0;i
基于新的示例问题具有可变范围:当您可能希望更改外部范围内的函数时,您正在声明新的本地
var desk
内部
newGame
函数。可能修复-删除
var
以更改外部(可能是全局)范围内的
deck


我们需要更多的代码,但您可能也应该阅读更多关于JavaScript中“作用域”的内容。请尝试在我运行代码时使用一切工具向我们发送您的代码…@user3675304:您可能需要发布您正在使用的实际代码来识别问题。如果您得到
未定义的
,这是一个问题,如果您想洗牌数组(如您在评论中所述)这是另一个问题。可能是一个问题导致了另一个问题,但如果您的问题中没有实际的代码,这将是一个猜测游戏。@user3675304而不是使用“solved”更新,只需将答案标记为已接受。请阅读感谢您的回答,但我不知道这是否有帮助,因为我需要更改函数中的数组。其想法是,如果剩余的“牌”少于20张,则牌组将被“洗牌”。如果(x@user3675304不,这没有帮助。你需要用显示行为的示例更新你的帖子。正如在评论中指出的那样,你需要了解JavaScript中变量的作用域。@user3675304问题仍然存在。因为你使用的是
var deck
而不是
deck
,你指的是局部作用域变量名d
deck
,而不是全局
deck
变量。只需删除
var
。定义变量一次,然后进行设置。不要多次定义。@H2Oooooo-声明局部变量与外部范围中的变量同名,通常不称为“提升”…@AlexeiLevenkov没有,但它会提升到函数的顶部,因此会干扰
deck
变量,即使卡的长度超过20。
function newGame() {
    if (deck.length <= 20) {
        var deck = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
    }
}
var deck=[1,2,3,4,5,6,7,8,9,10,10,10];
function getDeck(){
    for (var i = 0; i < deck.length; i++){
         console.log(deck[i]);
    }
}

getDeck(); //remember to call the function
function newGame() {
    if (deck.length <= 20) {
           deck = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
    }
}
getDeck();// will fail here
var deck=[1,2,3,4,5,6,7,8,9,10,10,10];
alert(deck.length);
function getDeck()
  {alert(deck);}
getDeck();// will work  here