2015-12-13 3 views
6

क्या एक ही दायरे में 2 समान वस्तुओं से समान चर को नष्ट करने का एक साफ तरीका है?ES2015 एक ही दायरे में दो बार ऑब्जेक्ट को नष्ट करें

function(oldState, newState) { 
    let {foo, bar} = oldState; 
    // do stuff // 
    let {foo, bar} = newState; // illegal double declaration in same scope 
    {foo, bar} = newState; // illegal, not sure why 
    let {foo: foo1, bar: bar1} = newState; // legal but ugly 
    foo = newState.foo; // legal, but requires multiple lines 
} 

उत्तर

8

आप विनाश के माध्यम से चर को पुन: असाइन करने के लिए अभिभावकों में असाइनमेंट को लपेट सकते हैं। कारण यह आवश्यक है क्योंकि अन्यथा { पार्सर द्वारा ऑब्जेक्ट शाब्दिक या असाइनमेंट पैटर्न की बजाय ब्लॉक शुरू करने के लिए माना जाता है। This blog post स्थिति को और विस्तार से बताता है।

function(oldState, newState) { 
    let {foo, bar} = oldState; 
    // do stuff // 
    ({foo, bar} = newState); 
} 
+1

यह नहीं कि '{...}' यहां किसी वस्तु को शाब्दिक रूप से इंगित नहीं किया गया है। –

+1

सच है, यह तकनीकी रूप से 'ऑब्जेक्ट एसिग्मेंटमेंट पैटर्न' है, लेकिन बिंदु यह बनी हुई है कि आपको बयान की स्थिति में किसी भी चीज़ के साथ बुरा समय होगा जिसके पास एक प्रमुख घुंघराले है और यह ब्लॉक स्टेटमेंट नहीं है :) – dfreeman

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