Google Analytics 和 Facebook Pixel 的 Closure Compiler 警告

Closure Compiler warning with Google Analytics and Facebook Pixel

我有一个看起来像这样的函数:

function StartThirdPartyScripts() {

    (function (i, s, o, g, r, a, m) {
        i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
            (i[r].q = i[r].q || []).push(arguments)
        }, i[r].l = 1 * new Date(); a = s.createElement(o),
        m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
    })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');

    ga('create', 'UA-XXXXXXXXX-1', 'auto');
    ga('send', 'pageview');

    !function (f, b, e, v, n, t, s) {
        if (f.fbq) return; n = f.fbq = function () {
            n.callMethod ?
            n.callMethod.apply(n, arguments) : n.queue.push(arguments)
        }; if (!f._fbq) f._fbq = n;
        n.push = n; n.loaded = !0; n.version = '2.0'; n.queue = []; t = b.createElement(e); t.async = !0;
        t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s)
    }(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js');

    fbq('init', 'XXXXXXXXXXXXXXXXXXXX');
    fbq('track', 'PageView');
}

问题是,当我在 Closure Compiler 高级模式下 运行 时,我收到了 3 条警告,因为参数数量不匹配。以下是警告:

        WARNING - Function function: called with 5 argument(s). 
        Function requires at least 7 argument(s) and no more than 7 argument(s).
        (function (i, s, o, g, r, a, m) { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     ClosureCompiler/initialjxaz.js:512: WARNING - Suspicious code. The result of 
        the 'not' operator is not being used. !function (f, b, e, v, n, t, s) { 
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ClosureCompiler/initialjxaz.js:512: 
        WARNING - Function function: called with 4 argument(s). Function requires at 
least 7 argument(s) and no more than 7 argument(s). 
        !function (f, b, e, v, n, t, s) { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        ^^^^ 0 error(s), 3 warning(s)

我该如何解决?

您可以安全地忽略这些警告。该代码具有未使用的额外函数参数,因此 Closure-compiler 发出警告。如果参数被标记为可选或具有默认值,则编译器不会发出警告。

我也不知道他们为什么要在该函数前面使用 ! 运算符。看起来他们正在使用它来防止没有分号的串联文件 - 但我只是希望他们为此使用 ;