1

Google Analytics provide this snippet of code to copy and paste to a site:

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-xxxxxxxx-1', 'mysite.com');
  ga('send', 'pageview');

</script>

But the a and m variables used in the function signature are not used throughout the code at all. Is it safe to remove them? I can't see any negative implications that could arise, and I don't understand why Google put them in the first place (i.e. their code minification tools should have probably removed them in the first place).

1 Answer 1

3

I see a and m being used.

.insertBefore(a,m)
3
  • You are right. Resharper marked them as unused, at first glance I also didn't see them and trusted Resharper too much. I'll file a bug report to Resharper. Thanks!
    – Ofer Zelig
    Commented Aug 6, 2013 at 0:59
  • 2
    Resharper might be getting confused because a and m aren't actually passed to the function (7 parameters declared, but only 5 arguments passed). But they are declared inside the function - it's a quick/compact way of declaring local variables without having to explicitly specify var.
    – MrWhite
    Commented Aug 6, 2013 at 14:36
  • "But they are declared inside the function" - I should perhaps have used the word initialised here, since they are declared in the function prototype.
    – MrWhite
    Commented Aug 6, 2013 at 16:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.