2017-03-21 13 views
0

私はまだJavascriptを完全に把握しようとしています。私はそれを理解するためにWebアプリケーションで十分に使いますが、深いレベルではありません。 Googleアナリティクス(と思われるアナリティクススクリプト)の最初の行は、存在しない場合は配列を作成します。私はそれがどのように機能しているのか理解できません。どのようにそれが存在するかを知るでしょう。私の研究は、グローバルなキューを続けているが、私はそれについて十分な情報を資金提供することはできません。ここでスニペットが含まjavascriptのFBとGAの両方の先頭に行です:Analytics Javascriptコード、どのようにグローバルキューを使用しますか

var _fbq = window._fbq || (window._fbq = []); 

var _gaq = _gaq || []; 

が、私はそれが存在するか、新しい空の配列を作成した場合、EOはVaRのX =この名前の既存のアレイであること取ります。その配列が存在するかどうかはどのように分かりますか?私にとって、再び、空の配列と常に同じになると思いますか?

答えて

0
if (_gaq[1]) { #... } 

_gaqが配列でない場合、スクリプトエラーが発生します。

この行は、falseを返す場合、_gaqを配列にします。しかし、データIEがtrueを返す場合、_gaqからデータを削除しません。

var _gaq = _gaq || []; 

_gaq [1] = "私はデータを持っている" そして_gaqが真と_gaq [1]まだデータが含まれています返されたのでしょう場合。

_gaqが空の配列であり、テストされてfalseが返され、空の配列になった場合は、不必要にミュートされます。プログラムの動作には影響しません。目的は_gaqのこの時点から配列であり、配列として使用できることです。

これは、_gaqにエラーのない別のスクリプトのデータが入力されている可能性がある場合に機能します。

var _gaq = _gaq || []; 
if (_gaq[1]) { #... } 
+0

こんにちは@Wayne、あなたが言っているのは、このグローバルキューがNAであるということです。これは、配列に値を設定する前に他の何かが実行されていない限り、常に空の配列になりますか? – Scott

+0

厳密には、存在しない配列の要素にアクセスしようとすると、スクリプトが停止し続けるので、続くコードが配列として使用するのが安全になります。データはまだAJAXリクエストやそれを満たす他のスクリプトからは存在しないかもしれませんが。 – Wayne

+0

クロスサーバスクリプトでは、サーバの1台がダウンしていることがあります。しかし、あなたはまだローカルのスクリプトが何かをしたい。 – Wayne

0

このように書くと: var _gaq = _gaq || [];

...コードは_gaqにそれが存在する場合はそれ自身の値を割り当て、そうでない場合はデフォルト値を作成します(この場合は空の配列([]))。

本質的コードがショートである:(_gaqは===定義されていない)場合 ;これはここで、 "short circuit evaluation" と呼ばれ、以前に議論された、アモン他の場所

{[] VaRの_gaq =}。 JavaScript OR (||) variable assignment explanation

+0

こんにちは@Olaviさんが応答してくれてありがとうございます。私はポストを読んで、それが評価する理由を理解しています、私の質問は、たとえ、たとえ、ガーが存在するかを知っていますか?スクリプトの最初の行です。上のようにそうではなく、_gaq ['a' => 'b']です。最初は見えますが、_gaqがどこかに存在していて、私の研究はこのグローバルキューを指し続けています。 – Scott

関連する問題