2016-05-05 11 views
5

मेरे पास जावा स्क्रिप्ट में एक ही रिटर्न प्रकार के दो फ़ंक्शन हैं लेकिन वापसी का प्रकार अंतर है। कतरना आईडी के कोड का उपयोग करसमान रिटर्न प्रकार क्यों है लेकिन परिणाम अंतर

function foo1() 
    { 
     return { 
      bar: "hello" 
     }; 
    } 

    function foo2() 
    { 
     return 
     { 
      bar: "hello" 
     }; 
    } 

समारोह बुला नीचे ..

console.log("foo1 returns:"); 
console.log(foo1()); 
console.log("foo2 returns:"); 
console.log(foo2()); 

आउटपुट परिणाम .... यहाँ अर्धविराम की

foo1 returns: 
Object {bar: "hello"} 
foo2 returns: 
undefined 
+0

आप छोटा सा हिस्सा के बजाय पूर्ण कोड प्रदान कर सकते हैं? – Darshit

+1

@ दर्शीत यह पूरा कोड है। –

+0

@ कोंस्ट कृपया कोड में संपादन का सुझाव न दें जब तक कि आप सभी विधियों के बारे में पूरी तरह से अवगत न हों - आपके द्वारा किए गए परिवर्तनों से समस्या गायब हो जाएगी। –

उत्तर

4

ऐसा इसलिए है क्योंकि जावास्क्रिप्ट व्याख्या

return 
{ 
    bar: "hello" 
}; 

return बयान ब्लॉक निर्माण (जो क्रम में नजरअंदाज कर दिया है) के बाद के रूप में बताया गया है:

function foo2() 
{ 
    return // get a automatic semicolon insert here 
    { 
     bar: "hello" 
    }; 
} 

कृपया एक नजर है। "ऑब्जेक्ट वापस नहीं करें" के रूप में नहीं। और मैं वास्तव में नहीं जानता कि जावास्क्रिप्ट देव ने ऐसा निर्णय क्यों दिया।

वैसे भी भारतीय पुरातत्व सर्वेक्षण सम्मिलित करता ;return बराबर कोड में जिसके परिणामस्वरूप के बाद:

return; 
{ 
    bar: "hello" 
}; 

न्यू लाइन return के बाद दोषी है। अगर आप कुछ वापस करना चाहते हैं तो इसका इस्तेमाल न करें।

0

एक नि: शुल्क जावास्क्रिप्ट आप अर्धविराम के बिना नहीं लेकिन यह एक स्वत: अर्धविराम डालता है, यही वजह है कि आप अपरिभाषित मिल Refer this

function foo1() 
    { 
     return { 
      bar: "hello" 
     }; 
    } 

    function foo2() 
    { 
     return{ 
      bar: "hello" 
     }; 
    } 
    console.log("foo1 returns:"); 
    console.log(foo1()); 
    console.log("foo2 returns:"); 
    console.log(foo2()); 
संबंधित मुद्दे