2016-08-02 11 views
5

मुझे अपने कोड में एक छोटी सी समस्या आई जो कि मुझे भ्रमित करने वाला था और उम्मीद है कि कोई यह समझा सकता है कि यह क्यों करता है।ब्रैकेट्स के साथ ES6 तीर फ़ंक्शन

कोड 1

sendText(){ 
    return this.http.get('/api') 
     .map((response:Response) => response.json()); 
} 

कोड 2

sendText(){ 
    return this.http.get('/api').map((response:Response) => { 
     response.json(); 
    }); 
} 

इन दो कोड के बीच मुख्य अंतर यह है कि संहिता में 2 मैं तीर समारोह के बाद कोष्ठक रखा जोड़ने के लिए है मेरे कार्य उन ब्रैकेट के अंदर और कोड 1 मैंने ब्रैकेट को बाहर निकाला और कार्य को एक पंक्ति पर रखें।

मेरा प्रश्न है मेरा उद्देश्य यह है कि जबकि Code1 वस्तु मुझे लगता रिटर्न प्रदान की angular2 सदस्यता के विधि के साथ Code2में सर्वर साइड वापस के रूप में अपरिभाषित आ रहा से आ रही क्यों नहीं करता है।

+4

ब्रेसिज़ आप का उपयोग करने के साथ 'सिर्फ एक क्लासिक समारोह में तरह return'। – georg

+2

ब्रैकेट के बिना: अभिव्यक्ति। ब्रैकेट के साथ: कोड ब्लॉक। –

उत्तर

10
(response:Response) => response.json() 

यह इस के लिए आशुलिपि है:

(response:Response) => { return response.json(); } 

{} आप ब्लॉक के अंदर कई बयान जोड़ते हैं। उनके बिना, फ़ंक्शन सिर्फ एक कथन चलाता है और इसका मूल्य देता है।

डॉक्स: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

+0

आपका स्वागत है। इसके अलावा, क्या आप मेरे लिए कुछ साफ़ कर सकते हैं? आपके पास 'प्रतिक्रिया' की बजाय 'प्रतिक्रिया: प्रतिक्रिया' क्यों है? क्या यह एक प्रकार के संकेत या कुछ की तरह है? ट्यूटोरियल ने मुझे बताया कि –

+0

उहम्म। यह एक टाइपस्क्रिप्ट सिंटैक्स है जो मुझे सुनिश्चित करता है कि यह प्रकार प्रतिक्रिया है। तो भविष्य की त्रुटियों से बचा जाता है। हालांकि मैं अपना शब्द स्वीकार नहीं करता हूं, हालांकि मैं अभी भी सीख रहा हूं। क्या यह अनावश्यक है? –

+0

टाइपस्क्रिप्ट में यह आवश्यक हो सकता है, मुझे नहीं पता, मैंने इसका कभी भी उपयोग नहीं किया है। जावास्क्रिप्ट में, यह एक वाक्यविन्यास त्रुटि है। –

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