"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ما الفرق بين إعلانات وظيفة JavaScript والتعبيرات؟

ما الفرق بين إعلانات وظيفة JavaScript والتعبيرات؟

نشر في 2025-03-24
تصفح:642

What's the Difference Between JavaScript Function Declarations and Expressions?

تعبيرات وإعلانات الوظيفة: تمييز بنيات JavaScript

عند العمل مع JavaScript ، يواجه المطورون غالبًا بنيتين: تعبيرات الوظيفة. في حين أنها تشبه في الوظيفة ، فإنها تختلف في معالجتها من قبل المتصفح وسلوك التحميل الخاص بهم في سياق التنفيذ.

تعبيرات الوظائف

، والمعروفة أيضًا باسم الوظائف المجهولة ، هي وظائف مجهولة المعينة للمتغير. يتم تعريفها باستخدام بناء الجملة التالي:

var foo = function() { return 5; }

المعلن عن وظائف

، من ناحية أخرى ، يتم تسمية وظائف يتم الإعلان عنها صراحة باستخدام الكلمة الرئيسية للدالة. بناء الجملة الخاص بهم هو:

function foo() { return 5; }

يتم رفع إعلانات الوظيفة إلى أعلى سياق التنفيذ وتتوفر قبل تنفيذ أي رمز. هذا يسمح لهم بالاتصال قبل إعلانهم ، ويمكن الوصول إليها في أي مكان ضمن النطاق الحالي ، حتى قبل إعلانهم.

، ومع ذلك ، يتم تحميلها فقط عندما يصل المترجم المترجم إلى هذا السطر من الكود. هذا يعني أنه إذا حاولت استدعاء تعبير وظيفة قبل إعلانه ، فسوف تواجه خطأ. لا يمكن الوصول إلى تعبيرات الوظائف إلا في النطاق الذي تم الإعلان عنه.

مثال

// سيؤدي هذا إلى خطأ var foo = function () {return 5 ؛ }

في هذا المثال ، لا يتوفر تعبير الوظيفة foo قبل إعلانه ، وبالتالي الخطأ عند محاولة تسميته. 5 ؛ }

بينما كان هذا الجملة عرضة تاريخياً للأخطاء في Safari ، فإنه يعمل الآن كما هو متوقع في المتصفحات الحديثة. على الرغم من توفر إعلانات الوظيفة على الفور خلال النطاق ، يتم تحميل تعبيرات الوظائف فقط عند الحاجة ، مما يتيح المزيد من الوصول الذي يتم التحكم فيه داخل قاعدة الشفرة. يعد فهم فروقهم أمرًا بالغ الأهمية لضمان تنفيذ الكود الصحيح وتجنب أخطاء وقت التشغيل المحتملة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3