所以,我已经尝试在定义之前在Javascript中使用变量。由于Javascript Hoisting(http://www.w3schools.com/js/js_hoisting.asp),我认为这样可以。但是,当我尝试使用这种技术时,我得到'engine.level.tileSize'的未定义错误。我想知道它是否是由于它是一个对象的一部分......还是因为它不是一个函数的明确部分?
(简而言之,这是一个带有完整工作代码的代码集 - 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;
有没有人能够了解这里发生的事情以及如何解决这个问题?
非常感谢。
答案 0 :(得分:4)
吊装仅声明变量和函数。
在该对象存在之前,您无法引用对象(并访问其属性的值)。