2014-01-09 4 views
-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); 
})(); 

알려 주시기 바랍니다

+0

가능한 중복 [? "var에 FOO = FOO는 || {}"자바 스크립트에서 무엇을 의미 하는가 (http://stackoverflow.com/questions/6439579/what-does-var -foo-foo-mean-in-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 프로토 타입 속성으로 네임 스페이스를 오염시킵니다. ({}은 Object 프로토 타입 속성과 동일하지만 훨씬 적은 수가 있습니다. 바람직한 이름을 가질 가능성이 적습니다.

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();

관련 문제