এখানে পারফরম্যান্স সমস্যাটি হ'ল লুপের প্রতিটি পুনরাবৃত্তিতে একটি নতুন ফাংশন অবজেক্ট তৈরি করার ব্যয় এবং আপনি কোনও বেনাম ফাংশন ব্যবহার করেন না তা নয়:
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() { }
পূর্ববর্তীটি একটি ফাংশন ডিক্লেয়ারেশন যেখানে দ্বিতীয়টি বেনামে ফাংশনে পরিবর্তনশীল অ্যাসাইনমেন্ট। যদিও তাদের একই প্রভাব রয়েছে বলে মনে হতে পারে তবে জাভাস্ক্রিপ্ট তাদের কিছুটা আলাদা আচরণ করে। পার্থক্যটি বোঝার জন্য, আমি " জাভাস্ক্রিপ্ট ফাংশন ঘোষণার অস্পষ্টতা " পড়ার পরামর্শ দিই ।
যেকোন পদ্ধতির জন্য প্রকৃত মৃত্যুর সময়টি মূলত ব্রাউজারের সংকলক এবং রানটাইমের প্রয়োগ দ্বারা নির্ধারিত হয়। আধুনিক ব্রাউজারের পারফরম্যান্সের সম্পূর্ণ তুলনা করার জন্য , জেএস পারফেক্ট সাইটটি দেখুন