2014-01-09 5 views
-1

Я столкнулся с определением пространства имен Javascript. я немного смущен.У меня есть некоторые вопросы о пространстве имен 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); 
})(); 

пожалуйста посоветуйте

+0

возможный дубликат [? Что значит "вар FOO = FOO || {}" означает в JavaScript] (http://stackoverflow.com/questions/6439579/what-does-var -foo-Foo-средний-в-JavaScript) – deceze

ответ

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/

1

[] против {} просто использует массив против объекта в качестве пространства имен. Бывшие часто работают, но почти всегда ошибаются; он загрязняет пространство имен с помощью свойств прототипа Array. ({} делает то же самое с свойствами прототипа объекта, но их гораздо меньше - и у них меньше шансов иметь желаемые имена.)

0

Чтобы ответить на ваш второй вопрос, эта функция, заключенная в круглые скобки, является функцией самоисполнения. Вы можете прочитать об этом here.

0

var googletag = googletag || {}; получит значение googletag, или, если googletag не определен, он займет пустой объект.

То же самое для второго, но вместо объекта, будет отбрасываться в пустой массив.

Для функции:
var foo = 5;
foo == 5 && doSomething(); // is the same thing as if (foo == 5) doSomething(); foo == 5 || doSomething(); // is the same thing as if (foo != 5) doSomething();

Смежные вопросы