-1

Javascript 名前空間の定義に出くわしました。私は少し混乱しています。

以下の名前空間の定義は正しいですか?

 var googletag = googletag || {};

最後に角括弧を追加すると、それはどういう意味ですか?

 googletag.cmd = googletag.cmd || [];

名前空間の後に定義された関数がある場合、それはどういう意味ですか?

var ctvAdManager = ctvAdManager || {};

(function () {
    var gads = document.createElement('script');
    gads.async = true;
    gads.type = 'text/javascript';
    var useSSL = 'https:' == document.location.protocol;
    gads.src = (useSSL ? 'https:' : 'http:') +
        '//www.googletagservices.com/tag/js/gpt.js';
    var node = document.getElementsByTagName('script')[0];
    node.parentNode.insertBefore(gads, node);
})();

お知らせ下さい

4

4 に答える 4

1

[]vsは{}単に配列とオブジェクトを名前空間として使用します。前者はしばしば機能しますが、ほとんどの場合間違っています。Array プロトタイプ プロパティで名前空間を汚染します。( {}Object プロトタイプ プロパティでも同じことを行いますが、それらの数ははるかに少なく、望ましい名前を持つ可能性は低くなります。)

于 2014-01-09T16:32:08.240 に答える
1

これは簡略OR表記です。英語で

var googletag = googletag || {};

意味: 「にgoogletag等しく設定しますgoogletagが、定義されていない場合はgoogletag、空のオブジェクトに設定します。

[]は同じで、オブジェクトではなく空の配列です。

使用した関数表記

(function() { ... })(); is called an `Immediately Invoked Function Expression`.

私はこのウェブサイトがそれをよく説明しているのを見つけました。http://benalman.com/news/2010/11/immediately-invoked-function-expression/

于 2014-01-09T16:32:20.110 に答える