Google在" Adding analytics.js to Your Site"中提供以下代码段:导:
list.stream().collect(Collectors.toMap(IMyInterface::getUniqueName(), i -> i));
这段代码是否初始化了Google Analytics?怎么样?
答案 0 :(得分:4)
让我们分解
window.ga=
将变量分配给windows对象上的ga
window.ga||function(){...}
由于短路,这将分配现有的window.ga
或调用该功能。这可以被认为是:
if(!window.ga){
window.ga = function(){...}
}
此
(ga.q=ga.q||[])
如上所述,使用短路将数组分配给ga.q
(windows.ga.q
)(如果尚不存在)。然后push
arguments
到此数组。所以ga
最终成为push
将参数放入数组的函数。
然后
ga.l=+new Date;
使用unary operator将日期(ga.l=
)指定为数字(+new Date
)。
因此,此代码最终创建一个对象ga
,其中的函数在首次调用(q
)时创建一个空数组,然后将arguments
推送到此数组。它还会创建日期整数(l
)。
代码已被缩小以使其在一行上并减小其大小。它也是以这样的方式编写的:如果一个对象已经存在,它就不会被覆盖。
为什么?我认为@Patricks answer covers that
答案 1 :(得分:3)
是和否 - 它是Google Analytics初始化的一部分,但不是全部。
它的作用是检查GA库是否已经加载(通过异步脚本标记)。如果没有,它会创建一个数组(ga.q
),用于缓存在加载库之前创建的所有跟踪事件。
加载GA完成后,库会处理这些排队的跟踪事件。