如何修复JS贪吃蛇游戏中setTimeout传递字符串而非函数的报错
错误原因
该报错是因为setTimeout接收了字符串类型的第一个参数,JavaScript运行时会隐式调用eval执行这段字符串代码,存在安全隐患,同时也容易出现作用域匹配异常,因此环境抛出了该优化提示。
修复方案
直接将setTimeout的第一个参数替换为函数引用即可,修改后的38-41行代码如下:
createSnake(); locateApple(); setTimeout(gameCycle, DELAY);
如果后续你的gameCycle需要传递参数,可以用箭头函数包裹调用逻辑,写法如下:
setTimeout(() => { gameCycle(参数1, 参数2); }, DELAY);
两种写法都不会触发隐式eval,符合JavaScript语法规范。
内容的提问来源于stack exchange,提问作者Darkstar games
相关产品推荐
相关产品推荐

