JSLint 100%有效的Google Universal Analytics代码段,修复"意外的分配表达式"

时间:2014-06-26 18:22:46

标签: javascript google-analytics jslint jshint

如何在不破坏"Unexpected assignment expression"功能的情况下修复JSLint错误analytics.js

有问题的一行:

(w[g].q = w[g].q || []).push(arguments);

完整代码:

<script src=//www.google-analytics.com/analytics.js async></script>
<script>
/*global window: false, ga: false */
(function (w, g) {
    'use strict';

    w.GoogleAnalyticsObject = g;
    w[g] = w[g] || function () {
        (w[g].q = w[g].q || []).push(arguments);
    };
    w[g].l = +new Date();

    ga('create', 'UA-XXXX-Y', 'auto');
    ga('send', 'pageview');
}(window, 'ga'));
</script>

做了什么:

  1. 避免脚本注入&#34;异步脚本&#34;自considered harmful
  2. 关注JSLint建议

1 个答案:

答案 0 :(得分:3)

你可以把它分成两行:

w[g].q = w[g].q || [];
w[g].q.push(arguments);

这将以完全相同的方式工作,它只是使代码更清晰。第一行检查w[g].q是否真实(可能在代码首次运行之前它将是undefined)并且如果是的话将为其分配一个空数组。

这是一种相对常见的技术,它有效地简化了if语句。如果你想让代码更清晰,你可以使用其中一个:

if (!w[g].q) {
    w[g].q = [];
}
w[g].q.push(arguments);