- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我查看了许多关于通过本地包装函数来消除 jslint 中(必要的)未使用参数错误的 stackoverflow 答案,如下所示:
/*jslint unparam: true*/
//my function with unused parameters
/*jslint unparam: false*/
但是,当我尝试执行此操作时,我从 JSLint 收到以下错误:
Unexpected '/*jslint'.
我尝试了它周围的各种空白,例如:
/* jslint unparam: true */
/*jslint unparam : true */
/* jslint unparam: true*/
但是,如果这些更改有任何影响的话,那就是根本看不到 jslint 内联指令,而是保留了未使用的错误。
经过一番尝试后,我怀疑问题是 JSLint 在处理过程中处于其他模式。有问题的函数位于自定义类声明内,类似于以下内容:
var myClass = CreateClass({
Constructor : function myClass()
{
//initialize
},
Parent : null,
Definition :
{
//member functions that will be copied into prototype,
// be added to custom chaining functionality, etc go here
/*jslint unparam: true*/
doSomething : function doSomething(inUnusedInterfaceParam, inUsedParam)
{
//do something with inUsedParam, but NOT inUnusedInterfaceParam
}
/*jslint unparam: false*/
}
});
无论我如何移动指令,它都不起作用。例如,我还尝试过以下变体:
doSomething : /*jslint unparam: true*/
function doSomething(inUnusedInterfaceParam, inUsedParam)
{
//do something with inUsedParam, but NOT inUnusedInterfaceParam
}
/*jslint unparam: false*/
这个问题只是导致我对 JSLint 产生真正的爱/恨关系的众多问题之一。我可能会在某个时候将它从我的构建中删除,转而使用 JSHint,但我还不想花时间来做这件事。同时,有没有办法让jslint在这里闭嘴?什么条件导致 jslint 提示它自己的内联指令,就像它目前正在做的那样?
最佳答案
简单的回答是JSLint directives operate at function scope (链接指向当前版本的 jslint.js),因此您尝试设置这些选项的位置不应该起作用。
// JSLint provides three inline directives. They look like slashstar comments,
// and allow for setting options, declaring global variables, and establishing a
// set of allowed property names.
// These directives respect function scope.
<小时/>
所以你是busting out on line 3243 。这是一般背景。关键是(很快)我们处于以 {
开头的 block 的上下文中。以下是 JSLint.js 中的代码:
prefix('{', function (that) {
//...
while (next_token.id !== '}') {
indent.wrap = false;
edge();
if (next_token.string === 'get' && peek().id !== ':') {
//...
} else {
name = next_token;
i = property_name();
if (typeof i !== 'string') {
next_token.stop('missing_property'); // line 3243
}
advance(':');
spaces();
name.first = expression(10);
}
由于您正在处理 {
标记,因此它不会期待或寻找指令,因此您的更改将会失败。
一开始我没有意识到,我最初(盲目地)尝试将 /*jslint unparam: true*/
向上移动,移出波浪括号并靠近 Definition :
,看看这是否会让它高兴,但得到:
Error (error): unexpected_a
/*jslint unparam: true*/
Unexpected '/*jslint'.
就在那时,我开始意识到现在不是使用指令的有效时间,JSLint 的代码和注释证实了这一点。
现在我同意你的观点[隐式声明],能够在此处设置指令会很有用。如果您确实愿意,您甚至可以作弊并对 jslint 代码执行此操作。但这根本不是 JSLint 的构建方式。
<小时/>只是为了疯狂邪恶,这完全是黑客行为,Crockford 站在我的立方体旁边,准备烧毁我的键盘并撕毁我的程序员卡,这样就能让jslint 做你想做的事。
转到line 3240 。检查存储在 name
中的 next_token 的 string
属性中是否有 "/*jslint"
。如果是这样,完全劫持 jslint 解析例程并将 unparam
设置为 true
(或者更好的是,理解 do_jslint()
,它设置这些值。说实话,我觉得粘贴这个很脏。
} else {
name = next_token;
//================================================
// HIJACK!!!!
//================================================
if (name.string === "/*jslint")
{
console.log && console.log("evil beginning");
advance();
// Completely cheating here. You'd need to grok do_jslint()
// (I don't yet) or at least parse the jslint line.
option.unparam = true;
// Splice out our reading the /*jslint line.
while (next_token.string !== "*/")
{
advance();
}
advance();
name = next_token;
}
//================================================
// Return control
//================================================
i = property_name();
if (typeof i !== 'string') {
// ....
然后在3413做同样的事情:
default:
//================================================
//================================================
if (next_token.string == "/*jslint")
{
console.log && console.log("evil ending");
// Same warning about super-kludging.
option.unparam = false;
while (next_token.string !== "*/")
{
advance();
}
advance();
}
else
{
next_token.stop('unexpected_a');
}
//================================================
//================================================
这是一个pasteee有了这些更改和一些更可怕的、永远不会重复的快速调试技巧。
我包含所有这些邪恶主要是为了表明您可以在这些地方解析 jslint
指令,但是 1.) JSLint 显然不能,2.) 您必须采取需要大量的时间来使其全面正确地工作,而不仅仅是在这个特定的用例中。
关于JSLint 未使用的参数不会动态变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22745586/
我找到了 this excellent question and answer它以 x/y(加上 center x/y 和 degrees/radians)开始并计算旋转- 到 x'/y'。这个计算很
全部: 我已经创建了一个 Windows 窗体和一个按钮。在另一个线程中,我试图更改按钮的文本,但它崩溃了;但是如果我尝试更改按钮的颜色,它肯定会成功。我认为如果您更改任何 Windows 窗体控件属
本网站的另一个问题已证实,C 中没有缩写的字面后缀,并且可以执行以下操作: short Number = (short)1; 但是转换它和不这样做有什么区别: short Number = 1; 您使
我有下表: ID (int) EMAIL (varchar(50)) CAMPAIGNID (int) isSubscribe (bit) isActionByUser (bit) 此表存储了用户对事
也就是说,无需触发Javascript事件即可改变的属性,如何保留我手动选中或取消选中的复选框的状态,然后复制到另一个地方? 运行下面的代码片段并选中或取消选中其中的一些,然后点击“复制”: $('#
我在网上找到的所有关于递增指针导致段错误的示例都涉及指针的取消引用 - 如果我只想递增它(例如在 for 循环的末尾)并且我不在乎它是否最终进入无效内存,因为我不会再使用它。例如,在这个程序中,每次迭
我有一个 Spring MVC REST 服务,它使用 XStream 将消息与 XML 相互转换。 有什么方法可以将请求和响应中的 xml(即正文)打印到普通的 log4j 记录器? 在 Contr
做我的任务有一个很大的挑战,那就是做相互依赖的任务我在这张照片中说的。假设我们有两个任务 A 和 B,执行子任务 A1、A2 和 B1、B2,假设任务 B 依赖于 A。 要理想地执行任务 B,您应该执
通过阅读该网站上的几个答案,我了解到 CoInitialize(Ex) should be called by the creator of a thread 。然后,在该线程中运行的任何代码都可以使
这个问题已经困扰我一段时间了。我以前从未真正使用过 ListViews,也没有使用过 FirebaseListAdapters。我想做的就是通过显示 id 和用户位置来启动列表的基础,但由于某种原因,
我很难解释这两个(看似简单)句子的含义: “受检异常由编译器在编译时检查” 这是什么意思?编译器检查是否捕获了所有已检查的异常(在代码中抛出)? “未经检查的异常在运行时检查,而不是编译时” 这句话中
我有一个包含排除子字符串的文本文件,我想迭代该文件以检查并返回不带排除子字符串的输入项。 这里我使用 python 2.4,因此下面的代码可以实现此目的,因为 with open 和 any 不起作用
Spring 的缓存框架能否了解请求上下文的身份验证状态,或者更容易推出自己的缓存解决方案? 最佳答案 尽管我发现这个用例 super 奇怪,但您可以为几乎任何与 SpEL 配合使用的内容设置缓存条件
我有以下函数模板: template HeldAs* duplicate(MostDerived *original, HeldAs *held) { // error checking omi
如果我的应用程序具有设备管理员/设备所有者权限(未获得 root 权限),我如何才能从我的应用程序中终止(或阻止启动)另一个应用程序? 最佳答案 设备所有者可以阻止应用程序: DevicePolicy
非常简单的问题,但我似乎无法让它正常工作。 我有一个组件,其中有一些 XSLT(用于导航)。它通过 XSLT TBB 使用 XSLT Mediator 发布。 发布后
我正在将一个对象拖动到一个可拖放的对象内,该对象也是可拖动的。放置对象后,它会嵌套在可放置对象内。同样,如果我将对象拖到可放置的外部,它就不再嵌套。 但是,如果我经常拖入和拖出可放置对象,则可拖动对象
我正在尝试为按钮和弹出窗口等多个指令实现“取消选择”功能。也就是说,我希望当用户单击不属于指令模板一部分的元素时触发我的函数。目前,我正在使用以下 JQuery 代码: $('body').click
我从 this question 得到了下面的代码,该脚本用于在 Google tasks 上更改 iframe[src="about:blank"] 内的 CSS使用 Chrome 扩展 Tempe
我有一些 @Mock 对象,但没有指定在该对象上调用方法的返回值。该方法返回 int (不是 Integer)。我很惊讶地发现 Mockito 没有抛出 NPE 并返回 0。这是预期的行为吗? 例如:
我是一名优秀的程序员,十分优秀!