2011-05-29 30 views
14

Google Analytics ट्रैकिंग कोड से:जावास्क्रिप्ट: क्या यह एक सशर्त असाइनमेंट है?

var _gaq = _gaq || []; 

कैसे काम करता है?

क्या यह एक सशर्त चर मूल्य असाइनमेंट है?

if(!(_gaq)) {_gaq = []; } 

: यह कह रही है के रूप में ही है?

+0

संभावित डुप्लिकेट [क्या करता है || ऑपरेटर करते हैं?] (http://stackoverflow.com/questions/830618/what-does-the-operator-do) –

+0

संक्षिप्त उत्तर: हाँ (हालांकि दूसरा एक वैश्विक '_gaq' * संपादित करता है: * अगर हम मानते हैं कि '_gaq' मौजूद नहीं है)। –

+0

@ फ़ेलिक्स - जब तक कि कुछ और '_gaq' – Quentin

उत्तर

15

या ऑपरेटर (||) बाएं हाथ की ओर लौट जाएगा यदि यह एक वास्तविक मूल्य है, अन्यथा यह दाएं हाथ की ओर लौट जाएगा।

यह आपके दूसरे उदाहरण के समान है, लेकिन चूंकि यह var कीवर्ड का उपयोग करता है, यह चर के लिए स्थानीय दायरा भी स्थापित करता है।

5

हां, यह है।

|| ऑपरेटर अपने बाएं "सत्य" ऑपरेंड का मूल्यांकन करता है।
यदि _gaq "falsy" (जैसे null, undefined, या 0) है, तो यह दायीं ओर ([]) का मूल्यांकन करेगा। कम से कम जरूरी नहीं कि

if (!_gaq) _gaq = []; 

:

+3

या 'false' या' "" '(खाली स्ट्रिंग) –

+0

+1 क्योंकि मुझे आपका विवरण पसंद आया –

1

वास्तव में यह कहते हुए नहीं ही है। वहाँ जब एक "_gaq" (मैं, जो लिखने से नफरत माध्यम से) एक बाहरी शाब्दिक दायरे में

function outer() { 
    var _gaq = null; 
    function inner() { 
    var _gaq = _gaq || []; 
    // ... 
    } 

    inner(); 
    _gaq = 1; 
    inner(); 
} 

, क्या आप के साथ अंत भीतरी क्षेत्र में एक नई चर रहा है: इस पर विचार करें। — उस मामले में "अगर" कथन अलग-अलग तरीके से भिन्न होता है तो उस मामले में केवल एक "_gaq" होगा।

if(!(_gaq)) {var _gaq = [];} 

(इस के बाद से वर सशर्त जाँच ऊपर फहराया जाता है, जिससे एक 'परिभाषित नहीं' त्रुटि से परहेज किया जा सकता है, और यह भी _gaq स्वचालित रूप से होना करने के लिए कारण होगा:

2

यह कहने की तरह ही है दायरे में स्थानीय के रूप में माना जाता है।)

संबंधित मुद्दे