Javascript 事件在数据层中的位置-是否重要?

Javascript 事件在数据层中的位置-是否重要?,javascript,google-tag-manager,google-datalayer,Javascript,Google Tag Manager,Google Datalayer,我有一段GTM代码,其中事件有时放在对象的顶部,有时放在底部。现在的问题是,是否有任何区别(比如从上一个事件发送数据)以及哪种方法是正确的 dataLayer.push({ 'event': 'addToCart', 'ecommerce': { 'add': { 'actionField': { 'list': 'Bestsellers' }, 'products': [{ 'nam

我有一段GTM代码,其中事件有时放在对象的顶部,有时放在底部。现在的问题是,是否有任何区别(比如从上一个事件发送数据)以及哪种方法是正确的

dataLayer.push({
    'event': 'addToCart',
    'ecommerce': {
        'add': {
            'actionField': { 'list': 'Bestsellers' },
            'products': [{
                'name': 'Product 1',
                'id': 1,
                'position': 1,
                'quantity': 1
            }]
        }
    }
});


注意,这只是一个例子。在向购物车添加产品的情况下,事件始终位于数据层的顶部,但在印象中,事件始终位于底部(这部分代码基于internet上的教程,其中事件被放置在那里)。乍一看,GA的统计数据似乎还不错。然而,在GTM+GA组合的情况下,有时很难找出某个东西是否工作不正确(而不是找出它是否工作正常),因此问题就来了。

您正在推进数据层。在一个对象内部,所有属性(电子商务、事件实际上是一个对象的属性)都是基于它们的名称编制索引的,而不是像数组中那样的数字,并且它们还可以精确地使用它们的名称来调用。Javascript中的对象不保证其属性的任何顺序。最后,您在对象中定义属性的顺序并不重要,因为它们将进一步“无序”,即使在将其推送到数据层的那一刻。

我也在考虑这一点,但我不确定(特别是如果属性的顺序保持与否)。再说一次,如果GTM依赖于一种难以预测的方法(属性在大多数浏览器中可能会以某种方式排序,但它不是可以依赖的东西),那就没有什么意义了。不管怎样,谢谢你的回答。在阅读了托梅克的答案后,我忍不住注意到,在某些方面,这和我的问题是一样的。这不完全相同,但答案解释了为什么事件在推送到数据层的对象中的位置不重要。
dataLayer.push({
    'ecommerce': {
        'add': {
            'actionField': { 'list': 'Bestsellers' },
            'products': [{
                'name': 'Product 1',
                'id': 1,
                'position': 1,
                'quantity': 1
            }]
        }   
    },
    'event': 'addToCart'
});