Nowy fragment Google Analytics wykorzystuje następujący kod:

<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>

Który wyzwala dwa błędy i ostrzeżenie w JShint:

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

Rozumiem, dlaczego Google postanowił opuścić średniki, oboje są na stwierdzeniu, które są ostatnią w ich bloku i oszczędza 2 bajty. Ale czy ktoś może wyjaśnić, dlaczego postanowili to napisać:

i['GoogleAnalyticsObject']=r

Zamiast tego:

i.GoogleAnalyticsObject=r

Gdzie ten ostatni jest w rzeczywistości 3 bajtów krótszy i według "Dostęp do nieruchomości JavaScript: Notacja dot Wobec wsporników? "powinny być również nieco szybsze.

3
Tomas 20 listopad 2013, 12:59

2 odpowiedzi

Najlepsza odpowiedź

Możliwe, że używają notacji łańcucha na notacji dot, ponieważ ciąg nie zostanie zmieniony podczas minifikacji.

2
xbonez 20 listopad 2013, 21:15

Bez jednego z ich rzeczywistych inżynierów pojawiają się i odpowiadamy, zostajemy odgadnąć. To moje najlepsze odgadnięcie:

Różnice wydajności między notatą kropki i wspornika są pomijalne (http://jsperf.com/ Dot-Notation-vs-Bracket-Notation / 2), więc wątpię, że nawet uwzględniono w decyzji. Imo Najbardziej prawdopodobnym powodem jest zmiana:

  • Preferencja stylu kodowania z ich zespołem inżynieryjnym
  • Być może ja ['GoogleanalicticsObject'] może wziąć więcej formularzy, a następnie "GoogleanaliticsObject", ewentualnie ze znakami specjalnymi, skrótów itp. To nie zadziała z notatą dot

Myślę, że ten ostatni jest najbardziej prawdopodobny, ponieważ jest to jeden z głównych powodów, dla których należy użyć wsporników nad kropką, jednak to tylko moja opinia.

0
Rob M. 20 listopad 2013, 16:26