代码之家  ›  专栏  ›  技术社区  ›  Dorad

google anlaytics异步跟踪片段的含义是什么?

  •  5
  • Dorad  · 技术社区  · 8 年前

    google在 Adding analytics.js to Your Site “指南:

    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
    

    这段代码初始化了google分析吗?怎么用?

    2 回复  |  直到 8 年前
        1
  •  4
  •   Liam Joshua    8 年前

    让我们把它分解

    window.ga=
    

    正在将变量分配给 ga 在windows对象上

    window.ga||function(){...}
    

    由于短路,这将分配现有的 window.ga 或者调用函数。这可以认为是:

    if(!window.ga){
        window.ga = function(){...}
    }
    

    这个

    (ga.q=ga.q||[])
    

    正在使用短接,如上所述,将数组分配给 ga.q ( windows.ga.q )如果还不存在的话。然后 push arguments 到这个阵营。所以 遗传算法 最终成为一个函数 推 将参数放入数组中。

    然后

    ga.l=+new Date;
    

    这个分配( ga.l= )日期作为数字( +new Date )使用 unary operator .

    所以这段代码最终创建了一个对象 遗传算法 在第一次调用时创建空数组的函数( q )然后推 论据 到这个阵营。它还创造了一个日期整合器( l )

    代码被缩小到一行并减小了大小。它也是这样写的,如果一个对象已经存在,它不会被覆盖。

    为什么? 嗯,我想 @Patricks answer covers that

        2
  •  3
  •   Patrick Hund    8 年前

    是和否——这是谷歌分析初始化的一部分,但不是全部。

    它所做的是检查ga库是否已经加载(通过异步脚本标记)。如果不是,它会创建一个数组( ga.q )缓存在库完成加载之前创建的所有跟踪事件。

    加载ga完成后,库将处理那些排队的跟踪事件。