new Functionएक फ़ंक्शन बनाता है जिसका पुन: उपयोग किया जा सकता है। evalबस दिए गए स्ट्रिंग को निष्पादित करता है और अंतिम विवरण का परिणाम देता है। आपके प्रश्न को गुमराह किया जाता है क्योंकि आपने एक आवरण फ़ंक्शन बनाने का प्रयास किया था जो कि एक फलाव का अनुकरण करने के लिए फ़ंक्शन का उपयोग करता है।
क्या यह सच है कि वे पर्दे के पीछे कुछ कोड साझा करते हैं? हाँ, बहुत संभावना है। बिल्कुल एक ही कोड? नहीं, निश्चित रूप से।
मज़े के लिए, यहाँ एक फ़ंक्शन बनाने के लिए eval का उपयोग करके अपने स्वयं के अपूर्ण कार्यान्वयन हैं। आशा है कि यह अंतर में कुछ प्रकाश डालता है!
function makeFunction() {
var params = [];
for (var i = 0; i < arguments.length - 1; i++) {
params.push(arguments[i]);
}
var code = arguments[arguments.length - 1];
return eval('[function (' + params.join(',')+ '){' + code + '}][0]');
}
इस और नए फ़ंक्शन के बीच सबसे बड़ा अंतर यह है कि फ़ंक्शन लेक्सिकली स्कोप नहीं है। तो यह चर और मेरा बंद करने के लिए उपयोग नहीं होगा।