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