JSLint是否有类似 JavaScript Lint 的控制注释(例如/*jsl:fallthru*/
)以使其忽略某些段落?
9 回答
放
/*ignore jslint start*/
之前和
/*ignore jslint end*/
在要忽略的代码之后。前任:
function ignore(){
/*ignore jslint start*/
var x; var y;
/*ignore jslint end*/
}
或导出 JsLint 设置,定义您的 IgnoreErrorStart/ IgnoreErrorEnd 符号并导入。
编辑
有些人可能会将这个答案与 JSHint 混淆。在这种情况下,请使用这些:
/*jshint ignore:start*/
<!-- code in here -->
/*jshint ignore:end*/
是的。从文档 [请注意,这是来自旧版本的文档,但它仍然适用]:
JSLint 的实现接受一个选项对象,该对象允许您确定您可以接受的 JavaScript 子集。也可以在脚本的源代码中设置这些选项。
选项规范可能如下所示:
/*jslint nomen: true, debug: true,
evil: false, vars: true */
选项规范以 /*jslint 开头。请注意,在 j 之前没有空格。规范包含一系列名称值对,其中名称是 JSLint 选项,值是真或假。选项规范优先于选项对象。
文档没有特别提到它,但是您可以使用多个 jslint 注释在整个代码中启用和禁用不同的检查(感谢 Dominic Mitchell)。
文档中有完整的选项列表。
这是补充 Matthew Crumley 出色答案的代码示例:
(function ($) {
$.isValidEmail = function(email){
/*jslint maxlen: 1000*/
var EMAIL_REGEXP = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i;
/*jslint maxlen: 200*/
return EMAIL_REGEXP.test(email);
};
}(jQuery));
据我所知,这里没有任何东西可以回答这个问题。下面的代码仍然给我验证错误,我不能让 JSLint 接受我现在没有时间更正一个工作正则表达式给定 ACTUAL PRIORITIES。
我收到的错误与未转义的“{”有关,可能会导致我的新专业团队拒绝将 JSLint 作为可行的工具。对于我们为更有效地发展所做的努力,似乎没有办法闭嘴,这似乎是有问题的。
/*jslint browser: true, devel: true, todo: true, regexp: true */
/*global $ */
/*
Abstract:
+ This module constitutes a layer of abstraction surrounding our bootstrap dependencies.
+ This module also contains some utility functions (so find a better place for them already!).
Validation:
+ This module has been validated using JSLint (www.jslint.com).
*/
var shoelaceModule = (function () {
'use strict';
return {
showModal: function ($target) {
$target.modal('show');
},
hideModal: function ($target) {
$target.modal('hide');
},
/*jsl:ignore */
/*ignore jslint start */
stringFormat: function (format) {
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/{([^{}]*)}/g, function (match, number) {
return args[number] !== 'undefined' ? args[number] : match;
});
},
/*ignore jslint end */
/*jsl:end */
init: function () {
return this;
}
};
}());
似乎并非如此。一些谷歌搜索发现了其他人的几篇帖子,以及 JSLint 人员的回复,内容是“修复你的代码而不是故意标记它有缺陷”。看起来并不完全友好。当然,也许在这种情况下你应该只修复代码,但我留给你回答。
我要说,不。JSLint 似乎没有一种简单的方式来说“忽略这段代码”,这让我很烦恼。单独禁用不同的选项,然后像马特建议的那样重新打开它们应该可以工作,但它不会像 JSHint 的/* jshint ignore:start */
,那样优雅/* jshint ignore:end */
。
我之所以研究这个是因为我使用的是Brackets,它是 JSLint 附带的,因为它是默认的 linter。我有一些缩小的 3rd 方代码,我暂时复制到我的 .js 中,只要它在那里,JSLint 就会抱怨。令人讨厌的是我经常想在早期粘贴一个缩小的块,这也是我希望 linter 查看我的代码以帮助我排除模糊错误的时候。稍后我将使用 Grunt 缩小并连接所有内容,但无法在早期禁用它是非常非常烦人的。
这似乎对我有用。(使用 zedapp 中嵌入的 jslint - zedapp.org)
/*jslint ignore:start*/
require([],function(require, exports, module) {
/*jslint ignore:end*/
var api = {
life: {
universe: {
everything: function() {
this.everything = {answer : 42};
}
}
}
};
api.life.universe.everything.bind(api.life.universe)();
console.log(JSON.stringify(api));
/*jslint ignore:start*/
return api;
});
/*jslint ignore:end*/
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.5/require.js"></script>
把代码放在/*jsl:ignore*/
周围 /*jsl:end*/
。