Javascript 如何不使用方法调用的第一个参数而仍然传递JSLint?
我必须用两个参数调用一个方法,但我只使用第二个参数。我的代码如下所示:Javascript 如何不使用方法调用的第一个参数而仍然传递JSLint?,javascript,methods,parameters,promise,jslint,Javascript,Methods,Parameters,Promise,Jslint,我必须用两个参数调用一个方法,但我只使用第二个参数。我的代码如下所示: function trapEvent(resolve, reject) { event_callback = function (evt) { evt.stopPropagation(); if (allowDefault !== true) { evt.preventDefault(); } cancelResolver(); cal
function trapEvent(resolve, reject) {
event_callback = function (evt) {
evt.stopPropagation();
if (allowDefault !== true) {
evt.preventDefault();
}
cancelResolver();
callback_promise = new Promise()
.cancellable()
.then(function () {
return callback(evt);
})
.then(null, function (error) {
if (!(error instanceof Promise.CancellationError)) {
canceller();
reject(error);
}
});
};
util.startListenTo(target, type, event_callback, useCapture);
}
return new Promise(trapEvent, canceller);
由于我在承诺中“锁定”我的事件,而承诺只能被拒绝或取消,因此我从不使用JSlint正确抱怨的resolve
方法。但是,根据,我需要在Promise回调方法中提供resolve
和reject
问题:如何在保持
resolve
的同时通过此方法?我认为最好的方法是更新jshint.json文件并将其配置为允许
“未使用”属性就是您正在查找的属性。它可以调整为包含以下值:
- false-不检查未使用的变量
- true-“vars”+检查最后一个函数参数
- “vars”-跳过检查未使用的函数参数
- “严格”-“变量”+检查所有函数参数
function trapEvent(resolve, reject) { //jshint ignore:line
是的,对于jslint,您要查找的是
unparam
-/*jslint unparam:true*/
这里是上下文。我猜是globals等,我假设您稍后在某处使用了callback\u promise
。注意第一行末尾的unparam
/*jslint white:true, sloppy:true, unparam: true */
/*global allowDefault, cancelResolver, callback, canceller, util, target, type, useCapture */
function trapEvent(resolve, reject) {
var event_callback, callback_promise;
event_callback = function (evt) {
evt.stopPropagation();
if (allowDefault !== true) {
evt.preventDefault();
}
cancelResolver();
callback_promise = new Promise()
.cancellable()
.then(function () {
return callback(evt);
})
.then(null, function (error) {
if (!(error instanceof Promise.CancellationError)) {
canceller();
reject(error);
}
});
};
util.startListenTo(target, type, event_callback, useCapture);
// ... assuming you're using callback_promise later
}
以前还有其他一些略显时髦的方法来解决这个问题,比如在函数中使用arguments
属性,可以将这两个参数完全排除在函数定义之外,然后在代码中提取出现在的reject
/*jslint white:true, sloppy:true, browser:true */
function trapEvent() {
var reject = arguments[1];
reject();
}
var fnTest = function () { window.alert("Used"); };
trapEvent("unused", fnTest);
。。但老实说,这真的很令人讨厌。现在我已经测试过了,谢天谢地,JSLint的最新版本(可能会关闭意外漏洞?)也不再接受它了
我建议使用
unparam
,但仅在那些出于任何原因无法控制函数签名的文件中使用,就像在这里的用例中一样。当您以这种方式引用函数时,您必须以同样的方式使用这两个参数,这没有什么问题,只要忽略jslint.hm即可。还有其他方法吗?你可以声明为全局变量。我刚在谷歌上搜索了一下,马上找到了答案。@CookieMonester-那为什么不发布呢?你说得对。一个字符可以带来什么不同:-)