【发布时间】:2015-09-24 09:02:58
【问题描述】:
问题
所以,在定义变量之前,我尝试在 Javascript 中使用它。由于 Javascript Hoisting (http://www.w3schools.com/js/js_hoisting.asp),我认为这没问题。但是,在尝试使用此技术时,我遇到了“engine.level.tileSize”的未定义错误。我想知道这是因为它是对象的一部分……还是因为它不是函数的明确一部分?
代码
(为简洁起见,这里有一个带有完整工作代码的 codepen - http://codepen.io/anon/pen/QjKaVG - 注意:虽然代码在本地完全工作,但由于缺少图像资产,它不会在 codepen 上工作。)
上面的代码是我的工作版本。但是,当我尝试将几行更改为以下内容时,问题变得很明显;
// -------------------------------------------------------------------------------
// VIEWPORT CLASS
// -------------------------------------------------------------------------------
engine.viewport = {};
engine.viewport.width = 15 * engine.level.tileSize;
engine.viewport.height = 8 * engine.level.tileSize;
// -------------------------------------------------------------------------------
// LEVEL CLASS
// -------------------------------------------------------------------------------
engine.level = {};
engine.level.tileSize = 32;
谁能解释一下这里发生了什么以及我如何解决这个问题?
非常感谢。
【问题讨论】:
标签: javascript variables canvas hoisting