Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何不使用方法调用的第一个参数而仍然传递JSLint?_Javascript_Methods_Parameters_Promise_Jslint - Fatal编程技术网

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”-跳过检查未使用的函数参数
  • “严格”-“变量”+检查所有函数参数
在我看来,它目前已被设置为“严格”。您可能希望将其更改为true或“vars”。对于不希望调用拒绝回调而只调用resolve方法的情况,后者将非常有用

如果只想对给定行禁用jshint,可以执行以下操作:

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-那为什么不发布呢?你说得对。一个字符可以带来什么不同:-)