दिलचस्प पोस्ट
क्लास एक्स से क्लास वाई के मूल्य को कॉपी करने के लिए c # में समान गुण नाम के साथ? मुझे कैसे पता चलेगा कि एक एंड्रॉइड डिवाइस के जीपीएस सक्षम है या नहीं टी-एसक्यूएल में एकाधिक कॉलम पिवट बंद करने की चेतावनी में अग्रविकल्प चर तक पहुंच मैं यूआरएल में उत्पन्न "सार्वजनिक / इंडेक्स.एफ़पी" कैसे निकाल सकता हूं laravel? हमेशा बड़े ओ विश्लेषण से क्यों निरंतर गिराया जाता है? एक्सेल इंटरऑप – दक्षता और प्रदर्शन स्थिर नाम से अज्ञात नामस्थान की श्रेष्ठता? विकल्प टैग के साथ छवियां जोड़ना डेटाटाबल, पंक्तियों को सशर्त रूप से कैसे हटाएं कौन सा तेज और क्यों है? सेट या सूची? अद्वितीय पहचानकर्ता कैसे उत्पन्न करें जो सभी आईओएस संस्करणों में काम करना चाहिए? आर में एक नामस्थान में आयात का क्या लाभ है? पायथन argparse म्यूचुअल अनन्य समूह WebBrowser दस्तावेज़ पूर्ण होने वाला ईवेंट एक से अधिक बार निकाल दिया गया

जावास्क्रिप्ट में असाइनमेंट को नष्ट करना

जैसा कि जावास्क्रिप्ट 1.7 के लिए मोज़िला परिवर्तक में देखा जा सकता है, उन्होंने नाशिक असाइनमेंट को जोड़ दिया है। अफसोस की बात है कि मैं सिंटैक्स का बहुत शौक नहीं हूं (क्यों एक और बी दो बार लिखें?):

var a, b; [a, b] = f(); 

ऐसा कुछ बहुत बेहतर होगा:

 var [a, b] = f(); 

यह अभी भी पीछे संगत होगा। पायथन-जैसी विध्वंस पिछड़ा संगत नहीं होगा।

वैसे भी जावास्क्रिप्ट 1.5 के लिए सबसे अच्छा समाधान है कि मैं साथ आने में सक्षम है:

 function assign(array, map) { var o = Object(); var i = 0; $.each(map, function(e, _) { o[e] = array[i++]; }); return o; } 

कौन सा काम करता है:

 var array = [1,2]; var _ = assign[array, { var1: null, var2: null }); _.var1; // prints 1 _.var2; // prints 2 

लेकिन यह वास्तव में बेकार है क्योंकि _ का कोई अर्थ नहीं है नामों को स्टोर करने के लिए यह सिर्फ एक खाली शेल है लेकिन दुख की बात है क्योंकि जावास्क्रिप्ट में पॉइंटर्स नहीं हैं प्लस पक्ष पर आप मूल मान निर्दिष्ट कर सकते हैं यदि मान का मिलान नहीं किया जाता है। यह भी ध्यान रखें कि यह समाधान सरणी को टुकड़ा करने की कोशिश नहीं करता है। तो आप कुछ ऐसा नहीं कर सकते {first: 0, rest: 0} । लेकिन यह आसानी से किया जा सकता है, यदि कोई ऐसा व्यवहार चाहता है

बेहतर समाधान क्या है?

Solutions Collecting From Web of "जावास्क्रिप्ट में असाइनमेंट को नष्ट करना"

सबसे पहले, var [a, b] = f() सिर्फ जावास्क्रिप्ट में ठीक काम करता है 1.7 – यह कोशिश करो!

दूसरा, आप with() थोड़े से उपयोग सिंटैक्स का उपयोग कर सकते हैं:

 var array = [1,2]; with (assign(array, { var1: null, var2: null })) { var1; // == 1 var2; // == 2 } 

बेशक, यह आपको मौजूदा चर के मूल्यों को संशोधित करने की अनुमति नहीं देगा, इसलिए आईएमएचओ यह जावास्क्रिप्ट 1.7 की सुविधा से बहुत कम उपयोगी है। कोड में मैं अब लिख रहा हूं, मैं ऑब्जेक्ट सीधे सीधे लौटाता हूं और अपने सदस्यों का संदर्भ देता हूं – मैं 1.7 सुविधाओं की अधिकता के लिए इंतजार करूँगा।

आपको डमी "_" चर की आवश्यकता नहीं है आप विंडो ऑब्जेक्ट स्कोप का उपयोग कर सीधे "ग्लोबल" चर बना सकते हैं:

 window["foo"] = "bar"; alert(foo); // Gives "bar" 

यहां कुछ और बिंदु हैं:

  • मैं इस समारोह का नाम "असाइन" नहीं करता क्योंकि यह एक सामान्य शब्द है।
  • जेएस 1.7 सिंटैक्स जैसी अधिक निकटता के लिए, मैं फ़ंक्शन को पहला तर्क के रूप में गंतव्य लेता हूं और दूसरा तर्क के रूप में स्रोत लेता हूं।
  • गंतव्य चर को पारित करने के लिए किसी आशय का उपयोग करना बहुत अच्छा है, लेकिन जेएस 1.7 के साथ भ्रमित किया जा सकता है जहां गंतव्य वास्तव में एक वस्तु है और एक सरणी नहीं है। मैं बस एक स्ट्रिंग के रूप में चर नामों की अल्पविराम से सीमांकित सूची का उपयोग करना पसंद करता हूं।

यहां बताया गया है कि मैं किसके साथ आया हूं:

 function destructure(dest, src) { dest = dest.split(","); for (var i = 0; i < src.length; i++) { window[dest[i]] = src[i]; } } var arr = [42, 66]; destructure("var1,var2", arr); alert(var1); // Gives 42 alert(var2); // Gives 66 

यहाँ मैं PHPstorm 10 में क्या किया है:

फ़ाइल -> सेटिंग -> भाषाएं और फ़्रेमवर्क -> …

… जावास्क्रिप्ट 1.8.5 जावास्क्रिप्ट भाषा संस्करण को सेट करें …

-> लागू करें क्लिक करें

मानक जावास्क्रिप्ट में हम सभी प्रकार की कुटिलता के लिए उपयोग करते हैं, और एक मध्यवर्ती चर का उपयोग करके विध्वंस करने वाले असाइनमेंट का अनुकरण करना बहुत बुरा नहीं है:

 function divMod1(a, b) { return [ Math.floor(a / b), a % b ]; } var _ = divMod1(11, 3); var div = _[0]; var mod = _[1]; alert("(1) div=" + div + ", mod=" + mod ); 

हालांकि मुझे लगता है कि निम्नलिखित पैटर्न अधिक सोनात्मक है:

 function divMod2(a, b, callback) { callback(Math.floor(a / b), a % b); } divMod2(11, 3, function(div, mod) { alert("(2) div=" + div + ", mod=" + mod ); }); 

ध्यान दें, कि दो परिणामों को एक सरणी के रूप में लौटने के बजाय, हम उन्हें कॉलबैक फ़ंक्शन में तर्क के रूप में पास करते हैं।

( http://jsfiddle.net/vVQE3/ पर चल रहे कोड देखें)