2014-12-09 8 views
22

ऑब्जेक्ट विनाशकारी त्रुटि के कारण क्यों होता है यदि var कीवर्ड इसके सामने नहीं है?ऑब्जेक्ट विनाश बिना var

{a, b} = {a: 1, b: 2}; 

SyntaxError: expected expression, got '='

निम्नलिखित तीन उदाहरण काम फेंकता समस्याओं के बिना

var {a, b} = {a: 1, b: 2}; 
var [c, d] = [1, 2]; 
    [e, f] = [1, 2]; 

बोनस सवाल: हम सरणी destructuring के लिए एक var क्यों की जरूरत नहीं है?

मैं की तरह

function() { 
    var {a, b} = objectReturningFunction(); 

    // Now a and b are local variables in the function, right? 
    // So why can't I assign values to them? 

    {a, b} = objectReturningFunction(); 
} 

उत्तर

31

मुद्दा जावास्क्रिप्ट में अनेक अर्थ हो रही {...} ऑपरेटरों की वजह से उपजी कुछ कर रही समस्या हुई थी।

{ एक वक्तव्य के शुरू में प्रकट होता है, यह हमेशा एक block है, जो करने के लिए आवंटित नहीं किया जा सकता का प्रतिनिधित्व करेंगे। यदि यह बाद में स्टेटमेंट में अभिव्यक्ति के रूप में दिखाई देता है, तो यह ऑब्जेक्ट का प्रतिनिधित्व करेगा।

var,, मदद करता है इस तरह के अंतर बनाने के बाद से यह एक वक्तव्य के बाद नहीं किया जा सकता grouping parenthesis होगा के रूप में: MDN से

({a, b} = objectReturningFunction()); 
-2

संदर्भ:

ही भीतर एक ही चर Redeclaring फ़ंक्शन या ब्लॉक स्कोप एक सिंटेक्स एरर उठाता है।

if (x) { 
    let foo; 
    let foo; // SyntaxError thrown. 
} 

Temporal dead zone and errors with let

+0

आपको कम से कम एक नोट करते हुए कहा कि सवाल गलत है जोड़ना चाहिए। – Taurus

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