2012-02-13 19 views
5

मैं बंद होने से उत्पन्न मिनी जेएस फाइलों में से एक को देख रहा था। मैंने पाया कि मैं जहाँ भी एक चर और तरह स्ट्रिंग के बीच समानता के लिए जाँच कर रहा हूँ,तुलना बयानों के जावास्क्रिप्ट न्यूनीकरण

a == "13" || a == "40" 

बंद के साथ

"13" == a || "40" == a 

इस संशोधन क्यों किया जाता है यह बदल देता है? क्या यहां कुछ प्रदर्शन लाभ है?

उत्तर

5

[अद्यतन: देखें @ जॉन जवाब है, इसे और अधिक समझ में क्यों एक js minifier इस करना होगा करने के लिए के रूप में बनाता है, और स्वीकार किए जाते हैं जवाब होना चाहिए]

एक सामान्य अवधारणा के रूप में, यह प्रोग्रामर त्रुटि से बचने के लिए है । आप मैन्युअल रूप से कोड को संशोधित करने और चर पहले और लगातार दूसरी डाल रहे थे, तो यह गलती से टाइप करने के लिए संभव है:

a == '40' || a = '13' 

ऊप्स! हमने तुलना करने के बजाए a से '13' पर सेट किया है।

'40' == a || '13' = a 

क्योंकि आप एक काम आपरेशन के बाएं हाथ पर एक निरंतर स्ट्रिंग नहीं डाल सकते एक अपवाद फेंक होगा: बाईं तरफ लगातार डाल करके, हम इस संभावना से बचना।

तो विचार के कुछ स्कूलों में, स्थिरता के खिलाफ समानता तुलना करते समय हमेशा स्थिर रहना सर्वोत्तम अभ्यास है। लगता है कि बंद होने की तरह अभ्यास है।

इन्हें "योडा स्थितियां" कहा जाता है।

ध्यान दें कि मेरी व्यक्तिगत वरीयता वास्तव में ज्यादातर मामलों में सही पर स्थिर रखने के लिए है, क्योंकि कोड बेहतर पढ़ने के लिए होता है, इसलिए मुझे नहीं लगता कि ट्रेडऑफ पर्याप्त है। लेकिन मैं योड स्थितियों के पीछे तर्क देखता हूं।

+0

यह स्पष्ट नहीं करता कि कंप्रेसर ऐसा क्यों करेगा। ओटी: क्या उन्होंने वास्तव में [योड स्थितियों पर धागा] हटा दिया था (http://webcache.googleusercontent.com/search?q=cache:stackoverflow.com/questions/2349378/new-programming-jargon-you-coined+jargon+ गढ़ा) ?! – user123444555621

+0

कंप्रेसर जहां भी संभव हो, सर्वोत्तम प्रथाओं का उपयोग करता है, क्योंकि यह कर सकता है। (ऑफचेंस कि कोई भी न्यूनतम संस्करण को संपादित कर सकता है?) –

+0

इसके अलावा, मुझे योड स्थितियों के बारे में उस धागे से अवगत नहीं था। मैंने अभी सुना है कि इस तरह से पहले वर्णित है। –

9

यह मामूली gzip संपीड़न लाभ के लिए किया जाता है। यदि आपके पास "x == 1" और "1 == x" है तो संकलक इसे दोनों मामलों में "1 == x" पर स्विच करता है और आपको अधिक नियमित कोड मिलता है जो बेहतर संपीड़ित होता है। जीत इतनी मामूली है कि मैंने कोड को हटाने और सीपीयू चक्रों को बचाने पर विचार किया है, लेकिन अब यह चालू है। प्रोग्रामर त्रुटियों को रोकने के साथ इसका कोई लेना-देना नहीं है क्योंकि यह "x = 2" को "2 = x" में कभी भी स्विच नहीं करेगा क्योंकि इससे प्रोग्राम का अर्थ बदल जाएगा।

+1

समझ में आता है। ओपी (@ user843241) इसे स्वीकार किए गए उत्तर में बदलना चाहिए। मैं अपना जवाब हटा दूंगा लेकिन मुझे नहीं पता कि यह कोशेर होगा या नहीं। हालांकि सिर्फ रिकॉर्ड के लिए, योड स्थितियां असाइनमेंट पर ऑपरेंड के आदेश के बारे में कभी भी कुछ नहीं कहतीं; बेशक आप "x = 2" को "2 = x" में कभी नहीं बदलेंगे। योड स्थितियां केवल समानता तुलना पर ऑपरेटरों के आदेश के बारे में हैं। –

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