Error handling JSLint错误:应为';忽略';而是看到';ex';
我一直在使用JSLint,但就在今天,我遇到了一个以前从未见过的错误。使用以下代码,我得到如下所示的错误:Error handling JSLint错误:应为';忽略';而是看到';ex';,error-handling,try-catch,jslint,Error Handling,Try Catch,Jslint,我一直在使用JSLint,但就在今天,我遇到了一个以前从未见过的错误。使用以下代码,我得到如下所示的错误: try { document.execCommand('BackgroundImageCache', false, true); } catch (ex) {} 错误: Expected 'ignore' and instead saw 'ex'. } catch (ex) {} 因此,我将代码更改为以下内容,错误消失了: try { document.execComma
try {
document.execCommand('BackgroundImageCache', false, true);
} catch (ex) {}
错误:
Expected 'ignore' and instead saw 'ex'.
} catch (ex) {}
因此,我将代码更改为以下内容,错误消失了:
try {
document.execCommand('BackgroundImageCache', false, true);
} catch (ignore) {}
我在互联网上找不到任何关于为什么这会修复错误的解释。有人知道发生了什么事或者为什么这样解决了问题吗
谢谢。我想你是对的——杰斯林特过去没有这样抱怨过。相反,它告诉您需要使用ex
,对吗?稍后我将检查github以查看和编辑此内容编辑:你的精彩绝伦!克罗克福德,JSLint的作者,在第3444行。他在jslint的源代码中使用了空的catch
块,所以我猜他也必须给我们一些乱七八糟的东西
JSLint希望您将空catch
块与ignore
作为变量名混在一起,以便阅读代码的人清楚地看到,您故意意味着在catch
块中不做任何事情。作为Crockford,他认为,“在使用难以区分明显错误的习惯用法时,编写正确的程序是很困难的。”
1.ex
已使用(正常)
所以(我猜您知道)如果您编写此代码并使用ex
,jslint不会抱怨
/*jslint browser: true, white:true, sloppy:true*/
var spam;
try {
spam = "spam";
} catch (ex) {
window.alert(ex);
}
2.ex
未使用表示忽略
(也可以)
因此,如果你不想对ex
做任何事情,他希望代码告诉人们你没有把ex
等价物放在那里,把变量命名为ignore
/*jslint browser: true, white:true, sloppy:true*/
var spam;
try {
spam = "spam";
} catch (ignore) {
}
3.ignore
已使用(错误!)
因此,在典型的Crockfordian方式中,您现在不能使用忽略并在捕获块中实际执行某些操作
/*jslint browser: true, white:true, sloppy:true*/
var spam;
try {
spam = "spam";
} catch (ignore) {
window.alert(ignore);
}
那就
意外的“忽略”<代码>}捕获(忽略){
Crockford的另一个超显式“不要编写看起来像错误的代码”
(旁白:当你谈论这个话题的时候,看看可能会很有趣。老实说,尽管基于这个讨论,忽略
可能是一个有用的惯例(我的意思是,它包括飞碟争论空的捕获
块!),我有点惊讶Crockford允许ignore
kludge,因为上面的链接中的参数与他调用一些正则表达式“不安全”的参数非常相似哇!很好的发现,很好的回答!非常感谢。我真的很想知道JSLint是否按照您提到的内容进行了更改,但我已经很久没有使用try-catch语句了,我不确定。再次感谢您的回答和链接。