首页 > 解决方案 > JavaScript 函数返回延迟的布尔值

问题描述

我不了解我的 JavaScript 函数的行为。

有一个简单的函数可以检查 URL 是否与 RegExp 匹配。它返回一个布尔值。

    /**
    * Check the url is matching the ProviderURL.
    *
    * @return {boolean}    ProviderURL as RegExp
    */
    this.matchURL = function(url) {
        return !(this.matchException(url)) && urlPattern.test(url);
    };

但是,当我调用此函数时,它在 if 条件中返回 false,但在 console.log 中返回 true。

console.log(providers[i].matchURL(request.url)); //true

if(providers[i].matchURL(request.url)) { 
  console.log("never displayed.");
}

我现在已经用以前的 if 条件“修复”了这个问题。不过,我想知道为什么程序会这样。

                let match = providers[i].matchURL(request.url);
                //really weird method
                if(match == providers[i].matchURL(request.url));

                if(match)
                {
                    result = removeFieldsFormURL(providers[i], request);
                }

它是一个WebExtensions 插件

url模式:

    /**
    * Add URL pattern.
    *
    * @require urlPatterns as RegExp
    */
    this.setURLPattern = function(urlPatterns) {
        urlPattern = new RegExp(urlPatterns, "mgi");
    };

标签: javascript

解决方案


推荐阅读