为什么新的Google Analytics代码段使用括号表示法?

时间:2013-11-20 08:59:16

标签: javascript google-analytics

新的Google Analytics代码段使用以下代码:

<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-XXXX-Y', 'auto');
ga('send', 'pageview');
</script>

这会在JSHint中触发两个错误和一个警告:

line 2.  ['GoogleAnalyticsObject'] is better written in dot notation.
line 3   Missing semicolon.
line 4   Missing semicolon.

我理解为什么谷歌决定省略分号,他们都是在他们的块中最后一个语句,它节省了2个字节。但有人可以解释他们为什么决定写这个:

i['GoogleAnalyticsObject']=r

而不是:

i.GoogleAnalyticsObject=r

后者实际上缩短了3个字节,根据“JavaScript property access: dot notation vs. brackets?”也应该稍快一些。

2 个答案:

答案 0 :(得分:2)

它们可能在点符号上使用字符串表示法,因为在缩小期间不会更改字符串。

答案 1 :(得分:0)

如果没有他们的实际工程师出现并回答,我们就会猜测。这是我最好的猜测:

点和括号表示法之间的性能差异可以忽略不计(http://jsperf.com/dot-notation-vs-bracket-notation/2),所以我怀疑这甚至是决定的因素。国际海事组织最可能的原因是改变是:

  • 与工程团队的编码风格偏好
  • 也许我['GoogleAnalyticsObject']可以采用更多形式,然后只是'GoogleAnalyticsObject',可能带有特殊字符,哈希等,这些都不适用于点符号

我认为后者最有可能,因为它是使用括号而不是点的主要原因之一,但这只是我的看法。