में असाइनमेंट को नष्ट करना जावास्क्रिप्ट 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}
जैसे कुछ नहीं कर सकते हैं। लेकिन अगर वह उस व्यवहार को चाहता था तो आसानी से किया जा सकता था।
बेहतर समाधान क्या है?
धन्यवाद! यह डाउनसाइड्स में से एक को ठीक करता है :) –
आज के रूप में 'var [a, b] = [1,2];' क्रोम में सिंटैक्स त्रुटि में परिणाम। – Marcin
@ मार्सिन: जावास्क्रिप्ट 1.7 एक [मोज़िला-केवल भाषा] है (http://stackoverflow.com/questions/1330498/what-is-cross-browser-support-for-javascript-1-7s- new-features- विशेष रूप से -ar)। – Shog9