Javascript变量提升的使用不正确?

时间:2015-09-24 09:02:58

标签: javascript variables canvas hoisting

问题

所以,我已经尝试在定义之前在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;

有没有人能够了解这里发生的事情以及如何解决这个问题?

非常感谢。

1 个答案:

答案 0 :(得分:4)

吊装仅声明变量和函数。

在该对象存在之前,您无法引用对象(并访问其属性的值)。