الفرق بين var functionName = function() {} و function functionName() {} في JavaScript
مرحبًا أيها الزملاء! أنا مطور واجهات أمامية مبتدئ وواجهت ارتباكًا. في مشاريع وكتب دراسية مختلفة، أرى طريقتين لتعريف الدوال:
```javascript
// الطريقة 1: Function Expression (تعبير دالة)
var myFunc = function() {
console.log("Hello from expression!");
};
// الطريقة 2: Function Declaration (إعلان دالة)
function myFunc() {
console.log("Hello from declaration!");
}
```
للوهلة الأولى، يفعلان نفس الشيء. لكن عندما بدأت بكتابة كود أكثر تعقيدًا، لاحظت سلوكًا غريبًا. على سبيل المثال، إذا قمت باستدعاء الدالة قبل تعريفها، فإن إحدى الطريقتين تعمل بينما الأخرى تنتج خطأ:
```javascript
// هذا يعمل
sayHello(); // ستطبع "Hello!"
function sayHello() {
console.log("Hello!");
}
// وهذا ينتج خطأ
sayGoodbye(); // TypeError: sayGoodbye is not a function
var sayGoodbye = function() {
console.log("Goodbye!");
};
```
لماذا يحدث هذا؟ ما الفرق الجوهري بين هاتين الطريقتين؟