嗨,我有3个javascript文件.
在file1.js我有
jQuery.noConflict()
jQuery(document).ready(function($) {
// ....
});
Run Code Online (Sandbox Code Playgroud)
我得到一个错误'jQuery'在定义之前就被使用了.并且"文档"在定义之前使用.
我如何安全地摆脱这个警告.
如果我做
var document = document || {};
Run Code Online (Sandbox Code Playgroud)
然后在我的utility.js中如果使用它,它将在IE中为null,在Firefox中为ok.
这是什么最好的解决方案?
我正在使用JSLint来验证我的大多数外部Javascript文件,但我得到的最大错误来自于在定义之前使用的函数.
这真的是我应该担心的问题吗?
看来Firefox,IE7和Chrome都不在乎.像JSLint 一样,流行的init()(通常我经常使用的)函数通常会粘在顶部,因为这对我来说main()是合理的(我喜欢假装它类似)将需要被推到文件的底部.
为什么JSLint会抱怨某些东西是否使用了尚未定义的函数?关键是该函数已定义 - 如果该函数调用该函数,则该函数存在并且事情将起作用.
看看下面的代码:
function foo()
{
// calls bar()
};
function bar()
{
// calls foo()
};
Run Code Online (Sandbox Code Playgroud)
没有办法以这样的方式组织这两种方法,这样可以使JSLint满意.我该如何处理这个问题?
JSLint不喜欢这段代码说''b'在定义之前就被使用了"
var a = function () {
b();
},
b = function () {
alert("Hello, world!");
};
a();
Run Code Online (Sandbox Code Playgroud)
但对此非常满意
var a, b;
a = function () {
b();
};
b = function () {
alert("Hello, world!");
};
a();
Run Code Online (Sandbox Code Playgroud)
但我没有在我的第二个代码片段中定义任何内容.我只是声明变量b.
那么为什么JSLint这样做呢?我有理由先宣布我的所有职能吗?
PS我明白我可以改变a和b的顺序,但在实际项目中我的函数是事件处理程序,有时它们互相调用,所以它可能是不可能的.