谷歌在"将analytics.js添加到您的网站"指南中提供了以下代码片段:
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
这段代码是否初始化了Google Analytics?如何实现?
谷歌在"将analytics.js添加到您的网站"指南中提供了以下代码片段:
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
window.ga=
ga
。window.ga||function(){...}
window.ga
或调用函数。可以理解为:if(!window.ga){
window.ga = function(){...}
}
这个
(ga.q=ga.q||[])
如果windows.ga.q
不存在,使用上面的方法进行简洁赋值来把一个数组分配给 ga.q
。然后,将 arguments
添加到这个数组中。因此,ga
最终成为一个将参数push
到数组中的函数。
接下来,
ga.l=+new Date;
这将使用一元运算符将日期作为数字(+new Date
)分配给ga.l
。
因此,此代码最终创建了一个对象ga
,其中包含一个在首次调用时创建空数组(q
)并将arguments
推入该数组的函数。它还创建了一个日期整数(l
)。
为了将其大小减小到一行,并减少其大小,代码已被压缩。它还以这样的方式编写,如果对象已经存在,则不会被覆盖。
为什么?嗯,我认为@Patrick的答案涵盖了这一点
是和不是 - 它是 Google Analytics 初始化的一部分,但不是全部。
它的作用是检查 GA 库是否已经通过异步脚本标签加载。如果没有,它将创建一个数组 (ga.q
),用于缓存在库完成加载之前创建的所有跟踪事件。
当加载 GA 完成时,库会处理这些排队的跟踪事件。