Javascript 如果函数不起作用,就让它在内部运行。(没有错误消息)
我在做蛇游戏。 我遇到的问题是,如果蛇进入与食物相同的位置,食物会重新进入不同的位置 不,我在网上的任何地方都找不到这个错误Javascript 如果函数不起作用,就让它在内部运行。(没有错误消息),javascript,Javascript,我在做蛇游戏。 我遇到的问题是,如果蛇进入与食物相同的位置,食物会重新进入不同的位置 不,我在网上的任何地方都找不到这个错误 function draw (){ if(snakeX == food.x && snakeY == food.y){ score++; eat.play(); let food = { x : Math.floor(Math.random()*17+1) * box,
function draw (){
if(snakeX == food.x && snakeY == food.y){
score++;
eat.play();
let food = {
x : Math.floor(Math.random()*17+1) * box,
y : Math.floor(Math.random()*15+3) * box
}
它应该在分数上加一分,发出声音,替换食物
现在它正在添加一个点并发出声音。您需要删除,因为您创建了一个新的局部变量,其作用域仅在块中。外部变量保持相同的值而不更改为新值
if (snakeX == food.x && snakeY == food.y) {
score++;
eat.play();
food = { // without let
x: Math.floor(Math.random() * 17 + 1) * box,
y: Math.floor(Math.random() * 15 + 3) * box
};
}
请看一下这个例子:
x获取一个具有自己值的新局部作用域。外部变量x保持不变
设x={a:42};
如果是真的{
设x={b:0};
console.logx;//b。。。
}
console.logx;//a…您需要删除,因为您创建的新局部变量的作用域仅在块中。外部变量保持相同的值而不更改为新值
if (snakeX == food.x && snakeY == food.y) {
score++;
eat.play();
food = { // without let
x: Math.floor(Math.random() * 17 + 1) * box,
y: Math.floor(Math.random() * 15 + 3) * box
};
}
请看一下这个例子:
x获取一个具有自己值的新局部作用域。外部变量x保持不变
设x={a:42};
如果是真的{
设x={b:0};
console.logx;//b。。。
}
console.logx;//a…只是OP的一个补充。正如你在代码中看到的,food.x和food.y已经被使用了。这种menas食品已经被定义。如果你使用let food,你将创建一个名为same的新变量,而不是更新现有变量。这只是一个逻辑错误,最痛苦的错误。只是对OP的补充。正如您在代码中看到的,food.x和food.y已经被使用了。这种menas食品已经被定义。如果你使用let food,你将创建一个名为same的新变量,而不是更新现有变量。这只是一个逻辑错误,最痛苦的错误。