javascript gtag片段中的arguments变量是什么?

gdrx4gfi  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(100)

未决问题。查看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)在这里有什么用?
谢谢!

kpbwa7wx

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开始。例如,如果向函数传递了三个参数,则可以按如下方式引用它们:

arguments[0]
arguments[1]
arguments[2]
bfnvny8b

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>是以下命令之一:

config
get
set
event
consent

<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("consent", "default", {
    ad_storage: "denied",
    analytics_storage: "denied",
    functionality_storage: "denied",
    personalization_storage: "denied",
    security_storage: "granted",
    wait_for_update: 500
  });

  gtag("set", "ads_data_redaction", true);

由于用例的多样性,gtag()函数没有定义特定的参数,而是使用arguments对象将它找到的任何参数推送到dataLayer,后者确定适当的用法。

相关问题