Javascript 如果一个文件中的函数被标记为全局函数,那么jslint是否不检查它们?
代码与前面相同,但问题不同: 我有这样的代码:Javascript 如果一个文件中的函数被标记为全局函数,那么jslint是否不检查它们?,javascript,jquery,jslint,Javascript,Jquery,Jslint,代码与前面相同,但问题不同: 我有这样的代码: /*jslint browser: true*/ /*jslint vars: true */ /*global $, jQuery, adminModalDone, ajaxOnFailure, createModal, defineModal*/ /*global doAddSubmit, doResetTabs, mvcOnFailure*/ /*global onDialogDone, onDialogFail, submitHandler
/*jslint browser: true*/
/*jslint vars: true */
/*global $, jQuery, adminModalDone, ajaxOnFailure, createModal, defineModal*/
/*global doAddSubmit, doResetTabs, mvcOnFailure*/
/*global onDialogDone, onDialogFail, submitHandler*/
function dialog($link) {
"use strict";
function doDialogAjax() {
$.ajax({
cache: false,
url: url,
dataType: 'html'
})
.done(onDialogDone)
.fail(onDialogFail);
}
function onDialogDone(data) {
content = data;
if (content.match(/^[eE]rror/)) {
mvcOnFailure(content);
} else {
defineModal();
createModal();
doAddSubmit();
doResetTabs();
adminModalDone();
}
}
}
现在jslint抱怨我在OnDialogDone中的大部分函数都没有使用。因为我将onDialogDone定义为全局,所以它是否由jslint进行评估?而不是将
onDialogDone()
声明为全局,这两种解决方法中的任何一种都应该删除警告:
onDialogDone()
和doDialogAjax()
的顺序(正如@James Allardice所建议的)。JSLint希望对函数(或变量名)的所有引用都出现在文件中比声明位置更低的位置var onDialogDone;
function doDialogAjax() {
// call to onDialogDone() is in here - ok since below the var declaration
}
onDialogDone = function (data) {
// ...
}
还有第三个选项,完全通过
undef:true
选项禁用此警告,但我不建议这样做。这个特别的警告是捕获代码中的打字错误和其他保证崩溃的最佳警告之一。(还有,它看起来像)。为什么要告诉JSLint,当它在同一个文件中定义时,onDialogDone
是全局的?对于在其他文件中定义但在此文件中使用的标识符,请使用global
。因为如果在使用后声明,则会抱怨未声明:-(这不是global
的目的,你只是在欺骗JSLint,让他认为函数必须在别处声明。@SamanthaJ-将onDialogDone
的声明移到调用它的任何代码之前。JSLint:“你的JS代码是有效的。”