【发布时间】:2018-01-17 19:59:00
【问题描述】:
这个条件是如何工作的:
function play(){
if (typeof gameInterval != "undefined")
clearInterval(gameInterval);
gameInterval = setInterval(gameLoop, 100);
allowPressKeys = true;
}
变量gameInterval只定义在这个函数内部,没有全局变量。 所以当 play() 被称为 gameInterval 时是未定义的。由于这个条件在未定义 gameInterval 时会起作用,所以我不明白它为什么起作用。有人可以解释吗?我正在尝试理解这一点,以便稍后在我的代码中对其进行操作。
【问题讨论】:
-
如果不是全局的,而是在外部范围内的某处声明。如您所见,
gameInterval没有在play函数中声明,因此它不是play的本地变量。不过可能是一个隐含的全局变量。 -
如果
gameInterval仅在函数范围内,则let/var在某处声明它。 -
你没有在任何地方声明变量,所以它是在全局范围内自动定义的。
-
由于缺少花括号,只有条件后面的第一行是它的一部分,如果存在则清除间隔,因此定义
gameInterval的下一行总是运行,在全局作用域,所以在下次函数运行时设置 -
“变量 gameInterval 只在这个函数内部定义”我没有看到它在任何地方定义?
标签: javascript function conditional