यहां प्रदर्शन समस्या लूप के प्रत्येक पुनरावृत्ति पर एक नई फ़ंक्शन ऑब्जेक्ट बनाने की लागत है और इस तथ्य से नहीं कि आप एक अनाम फ़ंक्शन का उपयोग करते हैं:
for (var i = 0; i < 1000; ++i) {
myObjects[i].onMyEvent = function() {
};
}
आप एक हजार अलग-अलग फ़ंक्शन ऑब्जेक्ट बना रहे हैं, भले ही उनके पास कोड की एक ही बॉडी हो और लेक्सिकल स्कोप ( क्लोजर ) से कोई बंधन न हो । निम्नलिखित तेजी से लगता है, दूसरी ओर, क्योंकि यह केवल लूप में सरणी तत्वों के लिए एक ही फ़ंक्शन संदर्भ प्रदान करता है :
function myEventHandler() {
}
for (var i = 0; i < 1000; ++i) {
myObjects[i].onMyEvent = myEventHandler;
}
यदि आप लूप में प्रवेश करने से पहले अनाम फ़ंक्शन बनाते थे, तो केवल लूप के अंदर रहते हुए इसे सरणी तत्वों के संदर्भ में असाइन करें, आप पाएंगे कि नामित फ़ंक्शन संस्करण की तुलना में कोई भी प्रदर्शन या शब्दार्थ अंतर नहीं है:
var handler = function() {
};
for (var i = 0; i < 1000; ++i) {
myObjects[i].onMyEvent = handler;
}
संक्षेप में, नामित कार्यों पर अनाम का उपयोग करने के लिए कोई अवलोकन योग्य प्रदर्शन लागत नहीं है।
एक तरफ के रूप में, यह ऊपर से दिखाई दे सकता है कि इसमें कोई अंतर नहीं है:
function myEventHandler() { }
तथा:
var myEventHandler = function() { }
पूर्व एक फ़ंक्शन घोषणा है जबकि बाद वाला एक अनाम फ़ंक्शन के लिए एक चर असाइनमेंट है। यद्यपि वे एक ही प्रभाव दिखाई दे सकते हैं, जावास्क्रिप्ट उन्हें थोड़ा अलग तरीके से व्यवहार करता है। अंतर को समझने के लिए, मैं पढ़ने की सलाह देता हूं, " जावास्क्रिप्ट फ़ंक्शन घोषणा अस्पष्टता "।
किसी भी दृष्टिकोण के लिए वास्तविक निष्पादन का समय काफी हद तक कंपाइलर और रनटाइम के ब्राउज़र के कार्यान्वयन से निर्धारित होता है। आधुनिक ब्राउज़र प्रदर्शन की पूरी तुलना के लिए , JS Perf साइट पर जाएँ