【发布时间】:2014-09-18 15:51:41
【问题描述】:
在编写 API 时,我倾向于将函数按自上而下的顺序排列,最暴露的函数在顶部,辅助函数在底部。但是,当使用var 而不是神奇的function 声明定义函数时,函数在定义之前不能使用。那么如果我们有一个名为$company 的对象并且我们正在定义它的方法呢?我可以以这种方式安全地订购我的 JS 吗?
var $company = {};
$company.foo = function(x) {
$company.bar(x*x); // used in definition, but not called directly - ok?
};
// $company.bar(6) // this would produce an error
$company.bar = function(x) {
alert(x);
};
它似乎适用于我当前版本的 Firefox,但我想知道它是否是已定义的行为。是否有任何版本的 IE 会出现这种情况?
【问题讨论】:
-
JS 在你调用它的时候会用到你的函数,所以当你声明 foo 时,bar 可能不存在,但调用 foo 时它应该存在。
标签: javascript function hoisting