【发布时间】:2012-05-18 16:57:48
【问题描述】:
我正在使用以下命名空间模式:
var MyNamespace = new function () {
var foo = function () {
bar();
};
var bar = function () {
alert("bar");
};
this.init = function () {
foo();
};
};
$(document).ready(function() {
MyNamespace.init();
});
JSLint 抱怨 bar 在定义之前就被使用了。然而foo 直到bar 被声明后才会被调用。该代码适用于我尝试过的所有浏览器:http://jsfiddle.net/jDKvz/
模式是每个How do I declare a namespace in JavaScript?,第二个答案。
我需要在这里修复什么,还是应该忽略 JSLint?
【问题讨论】:
-
好吧,如果你颠倒两个函数的顺序,JSLint 会很高兴,但你是否“需要”这样做是主观的。我不同意 JSLint 的所有观点,但在这种情况下,我可能只是更改代码以使其关闭。
-
@nnnnnn 我的真实项目要复杂得多,例如可能包含相互调用的函数。
-
在这种情况下,我很乐意在这一点上忽略 JSLint。虽然我可能会尝试使用
function foo() ...语法而不是var foo = function()...来查看它是否有任何不同,因为必须记住你必须真正关心的 lint 警告/错误是很烦人的...... -
@Andrew 你用的是什么版本的 JSLint? hosted version 抱怨
new function是一个“奇怪的结构”,但没有说 bar 是未定义的。
标签: javascript namespaces jslint javascript-namespaces