स्टीफानोव के जेएस डिजाइन पैटर्न पुस्तक में, वह लिखते हैं, "आप एक var कथन का उपयोग करते हैं और अल्पविरामों द्वारा सीमित एकाधिक चर घोषित करते हैं", और फिर निम्नानुसार "एकल var" पैटर्न का एक उदाहरण देता है:जावास्क्रिप्ट के नुकसान "एकल var पैटर्न"
function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {},
i,
j;
Stefanov अतिरिक्त लिखते हैं:
- "यह एक अच्छा अभ्यास भी समय आप यह घोषणा पर एक प्रारंभिक मूल्य के साथ चर प्रारंभ करने में है।"
- "आप घोषणा के समय कुछ वास्तविक कार्य भी कर सकते हैं, जैसे पिछले कोड में sum = a + b के मामले में।"
अब मैं कुछ कोड इस प्रकार है, एक वर पैटर्न के साथ चर का एक ही नंबर की घोषणा, लेकिन "घोषणा के समय में वास्तविक कार्य" पास बहुत-सी कर रही:
var html = '{purchaseQty}<br>FR: {fromLoc}'
,tpl = new Ext.XTemplate(html)
,srcReqLoc = record.get('SRC_REQUEST_LOC').trim()
,srcSupLoc = record.get('SRC_SUP_LOC').trim()
,fromLoc = srcReqLoc ? srcReqLoc : srcSupLoc
,tplCfg = {
purchaseQty: purchaseQty
,fromLoc: fromLoc
};
घोषणा के समय "वास्तविक काम" करने के नुकसान क्या हैं? बीटीडब्ल्यू मैं इसे Javascript single var pattern. Am I overloading it? का सटीक डुप्लिकेट नहीं मानता क्योंकि मैं केवल अपने कोड के साथ गलत होने के बजाय सामान्य नुकसान के बारे में पूछ रहा हूं।
मुझे लगता है कि मैं देख सकता हूं कि एक सामान्य नुकसान त्रुटियों की जांच करने में असमर्थता होगी, उदाहरण के लिए जहां मेरे उदाहरण में मैं रिकॉर्ड.get से वापस तारों पर ट्रिम() कहता हूं, लेकिन अगर अपरिभाषित हो जाता है, तो "कर सकते हैं अपरिभाषित वस्तु पर कॉल कॉल विधि नहीं है (या जो कुछ भी है;) फेंक दिया जाएगा। क्या कोई और कुछ सोच सकता है?
'trim() 'के साथ समस्या के लिए आप हमेशा अपना खुद का ट्रिम फ़ंक्शन लिख सकते हैं जो जांचता है कि क्या पास हो गया है यह एक स्ट्रिंग है या नहीं। – slebetman
@ स्लेबेटमैन - आपको किसी फ़ंक्शन की आवश्यकता नहीं है: '(record.get ('SRC_SUP_LOC') ||" ")। Trim()' (मानते हुए, प्रश्न के अनुसार, '.get() 'या तो स्ट्रिंग या अपरिभाषित/शून्य)। "जावास्क्रिप्ट, प्रोग्रामिंग शैली और आपके मस्तिष्क" का उल्लेख करने के लिए – nnnnnn