Avatar ·

الفرق بين var functionName = function() {} و function functionName() {} في JavaScript

مرحباً بالجميع! لقد بدأت للتو في تعلم JavaScript وواجهت موقفاً غير مفهوم بالنسبة لي. في أمثلة مختلفة من الكود، أرى طريقتين لإعلان الدوال تبدو متشابهة ولكنها تتصرف بشكل مختلف. الطريقة الأولى: ```javascript var myFunc = function() { console.log("مرحباً!"); }; ``` الطريقة الثانية: ```javascript function myFunc() { console.log("مرحباً!"); } ``` للوهلة الأولى، كلاهما يفعل نفس الشيء — ينشئ دالة باسم `myFunc`. لكنني لاحظت أنه إذا قمت باستدعاء الدالة قبل إعلانها، فإن الطريقة الأولى تنتج خطأً، بينما الثانية تعمل. على سبيل المثال: ```javascript // يعمل test1(); // سيظهر "يعمل!" function test1() { console.log("يعمل!"); } // خطأ test2(); // TypeError: test2 is not a function var test2 = function() { console.log("لا يعمل!"); }; ``` لماذا يحدث هذا؟ هل هناك اختلافات أخرى بينهما؟ أي طريقة أفضل للاستخدام وفي أي الحالات؟ سأكون ممتناً لشرح مفصل للمبتدئين.