في كثير من الأحيان نكتب عمليات الاسترجاع من خلال وظائف مجهولة.
ببساطة ، تعني مجهول الدالة بدون اسم ، عادة ما يتم تنفيذها على الفور. ولكن كيف يؤديها مع وظائف مسماة (وظائف بالأسماء)؟
يمكننا مقارنتها. يمكننا العثور على جهاز كمبيوتر يمكنه تنفيذ أوامر Shell لاستخدام عدد كبير من مكالمات الوظائف لمعرفة كيفية استهلاك وقت التنفيذ من قبل الاثنين:
مجهول
نسخة الكود كما يلي:
عدد var = 10000000
، مجموع = 0
بينما (count--) (function () {sum ++}) ()
تنفذها
نسخة الكود كما يلي:
$ time Node Anonymous.js
0M1.456S
المستخدم 0M0.015S
SYS 0M0.031S
لنلقي نظرة على الوظائف المسماة
اسمه
نسخة الكود كما يلي:
عدد var = 10000000
، مجموع = 0
var cb = function () {
SUM ++
}
بينما (العد-) CB ()
تنفذها
نسخة الكود كما يلي:
$ time node nood.js
0M0.575S
المستخدم 0m0.000s
SYS 0M0.046S
ستكون الوظائف المسماة أسرع بكثير ، لماذا يحدث هذا؟ في الواقع ، ليس من الصعب شرح. تحتاج الوظائف المجهولة إلى إعادة تفسير رد الاتصال في كل مرة ، ولكن يجب تفسير الوظائف المسماة فقط مرة واحدة ، وبالتالي سيتم تحسين الأداء. ومع ذلك ، وجد الاختبار أن هذا التحسن صغير جدًا ، وليس هناك حاجة لكتابة رد اتصال مناسب للغاية في متغير آخر بشكل منفصل.
هناك طريقتان لكتابة وظائف مسماة:
تعبيرات الوظيفة
نسخة الكود كما يلي:
var func = function () {
console.log ('a')
}
إعلان الوظيفة
نسخة الكود كما يلي:
وظيفة func () {
console.log ('b')
}
في الواقع ، إذا تم استخدام هذين معًا ، فقد تكون هناك مشاكل ، مثل
نسخة الكود كما يلي:
var func = function () {
console.log ('a')
}
وظيفة func () {
console.log ('b')
}
// الإخراج هو: أ
لذلك ، في الوقت الحالي ، يتم استخدام شكل تعبيرات الوظائف في الغالب ، ولكن كيف يتم أداء إعلانات الوظيفة؟
اسمه 2.JS
نسخة الكود كما يلي:
عدد var = 10000000
، مجموع = 0
وظيفة CB () {
SUM ++
}
بينما (العد-) CB ()
تنفذها وقارن بين الاثنين
نسخة الكود كما يلي:
$ time node nood.js
0M0.553S
المستخدم 0m0.000s
SYS 0M0.015S
$ time node name2.js
0M0.529S
المستخدم 0m0.000s
SYS 0M0.047S
يبدو أن إعلان الوظيفة سيكون أسرع قليلاً ، لكنه غير مهم للغاية. أنا شخصياً أوصي طريقة كتابة إعلان الوظيفة.
ملاحظة: يتم اختبار هذه البيانات باستخدام GIT-Base ضمن Windows 7.