تكون وظائف الأسهم أكثر إحكاما ، لكن هل تعلم أن هناك مجموعة كاملة من الاختلافات الأخرى التي تقدمها؟

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

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

1. الاختلافات النحوية

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

وظائف سهم JavaScript استخدام بنية لغة أصغر تكون أكثر قابلية للفهم. يمكنك استخدامها لإنشاء وظائف من خلال دمجها في تعبير أو جملة واحدة.

مقدار ثابت أضف = (أ ، ب) => أ + ب ؛

في هذا المثال ، فإن ملف يضيف الوظيفة تقبل مدخلين ، أ و ب، وإرجاع مجموعها. ال => تُعرِّف العلامة هذا كدالة سهم.

instagram viewer

من ناحية أخرى ، يتطلب تحديد وظيفة منتظمة استخدام وظيفة كلمة رئيسية ، ذات بناء جملة أكثر تفصيلاً ، كما هو موضح في هذا المثال:

وظيفةيضيف(أ ، ب) {
يعود أ + ب ؛
}

في هذا المثال ، فإن ملف وظيفة تحدد الكلمة الأساسية وظيفة عادية تستخدم أيضًا الأقواس المتعرجة و يعود إفادة.

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

2. اختلافات النطاق

يصف مصطلح "تحديد النطاق" كيف يمكن الوصول إلى المتغيرات والوظائف الداخلية للدالة. في JavaScript ، تقوم بتعريف المتغيرات والوظائف والوصول إليها في التعليمات البرمجية باستخدام تحديد النطاق. متميزة عنهم يمكن أن يؤثر تحديد النطاق بشكل كبير على كيفية كتابة واستخدام جافا سكريبت السهم والوظائف العادية.

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

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

لمعرفة الفرق ، تحقق من المثال التالي. لنفترض أن لديك ملف شخص كائن مع اسم خاصية وطريقة تسمى sayName () التي تسجل اسم الشخص باستخدام وظيفة عادية:

مقدار ثابت شخص = {
اسم: 'جون،'

اسم القول: وظيفة() {
وحدة التحكم.سجل(هذا.اسم)؛
}
};

person.sayName () ، // تسجيلات "جون"

هنا ، وظيفة sayName () العادية هي طريقة كائن الشخص و هذا الكلمة الأساسية داخل هذه الوظيفة تشير إلى كائن ذلك الشخص.

دعنا الآن نجرب نفس الشيء مع وظيفة السهم:

مقدار ثابت شخص = {
اسم: 'جون',

اسم القول: () => {
وحدة التحكم.سجل(هذا.اسم)؛
}
};

person.sayName () ، // السجلات غير محددة

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

نتيجة لذلك ، عندما تتصل person.sayName ()، لقد حصلت غير معرف بدلا من "جون." يمكن أن يؤثر هذا بشكل كبير على كيفية كتابة واستخدام الوظائف في التعليمات البرمجية الخاصة بك.

3. حالات الاستخدام وأفضل الممارسات

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

تناسب وظائف الأسهم بشكل أفضل البرمجة الوظيفية وعمليات الاسترجاعات التي لا تتطلب هذا كلمة رئيسية.

4. اختلافات ربط الوظيفة

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

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

في المقابل ، لا تملك وظائف السهم هذا كلمة رئيسية ؛ بدلا من ذلك ، يحصلون عليه من النطاقات المحيطة.

دعنا نلقي نظرة على مثال لفهم المزيد عن هذا الاختلاف. افترض أن لديك ملف شخص كائن مع اسم الحقل وطريقة تسمى sayName () تستخدم وظيفة عادية لتسجيل اسم الشخص:

مقدار ثابت شخص = {
اسم: 'جون',

اسم القول: وظيفة() {
وحدة التحكم.سجل(هذا.اسم)؛
}
};

مقدار ثابت آخر شخص = {
اسم: "جين"
};

person.sayName.call (anotherPerson) ؛ // سجلات "جين"

في هذا المثال ، تقوم باستدعاء كائن الشخص sayName () طريقة مع القيمة شخص اخر باستخدام يتصل() طريقة. وبسبب هذا ، فإن sayName () طريقة، هذا، لا بد من الكلمات الرئيسية شخص اخر كائن ، ويسجل "جين" بدلا من "جون."

دعنا الآن نستخدم نفس الشيء مع وظيفة السهم:

مقدار ثابت شخص = {
اسم: 'جون',

اسم القول: () => {
وحدة التحكم.سجل(هذا.اسم)؛
}
};

مقدار ثابت آخر شخص = {
اسم: "جين"
};

person.sayName.call (anotherPerson) ؛ // السجلات غير محددة

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

هذا يعني أنه عند الجري person.sayName.call (anotherPerson)، وظيفة السهم هذا الكلمة الأساسية لا تزال الكائن العالمي ، و غير معرف يحل محل جين في السجل.

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

5. عودة ضمنية

وظيفة السهم لها ميزة إرجاع ضمنية. إذا كان جسم الوظيفة يتكون من تعبير واحد ، فإن الوظائف ترجع هذا التعبير.

كمثال:

مقدار ثابت مزدوج = (x) => س * 2;

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

6. اختلافات التوافق

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

فيما يلي توضيح لوظيفة السهم التي قد لا تعمل في ظروف أكثر رسوخًا:

مقدار ثابت أضف = (أ ، ب) => أ + ب ؛

ما يلي هو وظيفة عادية قابلة للمقارنة يجب أن تعمل في معظم المواقف:

وظيفةيضيف(أ ، ب) {
يعود أ + ب ؛
}

استخدم الوظائف العادية بدلاً من وظائف الأسهم عند استهداف البيئات القديمة لضمان التوافق. ومع ذلك ، يمكن أن توفر وظائف الأسهم بنية يسهل فهمها وأكثر تكثيفًا عند العمل مع المستعرضات والبيئات الحديثة.

الاختيار بين وظائف السهم والوظائف العادية في جافا سكريبت

في JavaScript ، يكون للسهم والوظائف العادية ميزات وتطبيقات مميزة. وظائف السهم لها تركيب بسيط ، وراثي هذا مصطلح الكلمات الرئيسية من سياق استخدامها بينما الوظائف العادية أكثر قابلية للتكيف ويمكن أن تتعامل مع مواقف أكثر تعقيدًا.

من الأهمية بمكان معرفة كيفية اختلافها وكيفية استخدامها وفقًا لمتطلبات التعليمات البرمجية الخاصة بك. عند تحديد نوع الوظيفة المراد استخدامها ، يجب أيضًا مراعاة اختلافات التوافق.

في النهاية ، يعد سهم JavaScript والوظائف العادية أدوات قوية تساعدك على كتابة تعليمات برمجية أكثر وضوحًا وفعالية.