未决问题。查看Global site标记(gtag.js)片段,我并不真正理解arguments
变量的用法。
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_TRACKING_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'GA_TRACKING_ID');
</script>
它到底是什么意思?dataLayer.push(arguments)
在这里有什么用?
谢谢!
2条答案
按热度按时间kpbwa7wx1#
这对Analytics或gtag来说没有什么特别之处,它只是一个标准的Javascript对象,它表示传递给函数的所有参数。
分析在这里所做的只是将一个对象和传递给gtag标签的所有参数推送到dataLayer中,这并不意味着您可以简单地删除gtag函数并直接使用dataLayer,因为一旦gtag.js文件被加载,它就可以用一个不同的函数替换gtag函数,从而保持相同的接口。
出发地:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments
arguments
对象是所有(非箭头)函数中可用的局部变量。您可以使用arguments
对象在函数中引用函数的参数。此对象包含传递给函数的每个参数的条目,第一个条目的索引从0开始。例如,如果向函数传递了三个参数,则可以按如下方式引用它们:bfnvny8b2#
对于Eduardo的回答,
gtag()
函数是在gtag片段中定义的,没有定义参数,这被称为可变参数函数。这种定义上的模糊性的原因是
gtag()
函数被接收dataLayer用于各种目的。您可以在这篇Google Analytics帮助文章中看到几个定义的用例,并阅读gtag.js API docs中的语法和各种命令关键字。来自gtag.js API文档:
Google标签(gtag.js)API由一个函数gtag()组成,语法如下:
gtag(<command>, <command parameters>);
<command>
是以下命令之一:<command parameters>
是可以传递给gtag().
的参数当调用
gtag('config', 'Property_id')
时,Google属性被配置为接收页面视图数据。如果传递
'event'
命令,则gtag函数的用法会有所不同。例如:
gtag('event', 'sign_up', { 'method': 'email' });
这会将三个参数传递给
gtag()
函数,该函数用于在Google Analytics(或页面上任何其他已配置的Google属性)中记录注册事件。在此示例中,"sign_up"参数是事件名称。最后一个参数是包含一组事件参数的对象。在此示例中,"method"是值为"email"的参数。
以下是用于启动Google Consent模式的一些其他示例:
由于用例的多样性,
gtag()
函数没有定义特定的参数,而是使用arguments
对象将它找到的任何参数推送到dataLayer,后者确定适当的用法。