gtag.jsはアロー関数では動かない

公開


この問題に遭遇したか

function gtag(){dataLayer.push(arguments);}

Google アナリティクスを導入したことがある人なら見たことがあるだろうコード。 当然、このままなら普通に動く。 だが、私は可能であれば絶対にfunctionを使いたくない。 そこで、gtag.jsを以下のように書いたことでこの問題に遭遇した。

const gtag = (...args) => dataLayer.push(args);

何が起きたか

collectのリクエストが送信されなかった。 これが送信されないと計測ができない。

原因

これは推測でしかないが、dataLayerにpushするのはただの配列風オブジェクトではなく、Argumentsオブジェクトでないといけないのが原因。 実際、functionでも下のコードでは動かなかった。

const gtag = function (...args) {
  dataLayer.push(args);
};

解決方

argumentsを使用できるfunctionを使わないといけないので、アロー関数は諦める。

© 2022 sqrtox, All Rights Reserved.

謝辞