السلام عليكم ♥️
لو بتجهز لــ interview في JavaScript هتحتاج تكون مستعد تجاوب على الأسئلة دي تعالوا نشرح كل نقطة بالتفصيل عشان تبقى جاهز 🥰
1- إيه الفرق بين == و ===؟ 🤔
== بيعمل مقارنة بين القيمتين بس مش بياخد باله من النوع (type)، يعني لو عملت 5 == "5" هيرجع true عشان بيحول الاتنين لنفس النوع قبل المقارنة
=== بيعمل مقارنة بين القيم والقيم النوعية (type)، يعني لو عملت 5 === "5" هيرجع false لأن واحدة رقم والتانية ك نص كلام
📌 شوف المثال ده :
console.log(5 == "5"); // هيطبع true
console.log(5 === "5"); // هيطبع false
2- إيه هو الـ closure وإزاي بنستخدمه؟ 🔐
الـ closure هو مفهوم في JavaScript بيسمح للفانكشن تحتفظ بالبيانات اللي في السياق بتاعها حتى بعد ما تتنفذ
بيكون مفيد جدًا لما تكون محتاج تحفظ حالة معينة في الفانكشن
📌 شوف المثال ده:
function outerFunction() {
let counter = 0;
function innerFunction() {
counter++;
return counter;
}
return innerFunction;
}
const count = outerFunction();
console.log(count()); //هيطبع 1
console.log(count()); // هيطبع 2
console.log(count()); // هيطبع 3
3- إيه الفرق بين var, let, و const؟ 📝
var: بتعرف المتغير في نطاق الفانكشن اللي هو فيها، ويمكن إعادة تعريفه وتغيير قيمته
let: بتعرف المتغير في نطاق البلوك {} اللي هو فيه، ومش ممكن إعادة تعريفه، لكن ممكن تغيير قيمته
const: زي let بالضبط، بس مش ممكن تغيير قيمته بعد تعريفه
📌 شوف المثال ده :
var x = 10;
x = 20; // ممكن تغيير القيمة
let y = 10;
y = 20; // ممكن تغيير القيمة
const z = 10;
z = 20; // هيرمي خطأ لأن مش ممكن تغيير القيمة بتاعتها وبس كده
4- إزاي نستخدم الـ async/await في الـ promises؟ ⏳
async/await بيخلي الكود بتاعك يبان كأنه سنكروني (synchronous) رغم إنه بينفذ بشكل أسينكروني (asynchronous)
بيبسط التعامل مع الـ promises وبيخليك تكتب كود أوضح وأسهل في القراءة
📌 شوف المثال ده :
async function fetchData() {
try {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
fetchData();
5- إيه هي الـ Arrow functions و إيه مميزاتها؟ 🎯
Arrow functions هي طريقة مختصرة وسهلة لكتابة الفانكشنات
مش بتعمل this context جديد، وده بيسهل استخدامها في بعض السيناريوهات
📌 شوف المثال ده :
// الفانكشن التقليدية
function add(a, b) {
return a + b;
}
// الفانكشن السهمية اللي هي ال arrow
const add = (a, b) => a + b;
6- إزاي نقدر نتعامل مع الـ this في JavaScript؟ 🧩
this بيرمز للكونتكس اللي الفانكشن اتنفذت فيه
ممكن تختلف قيمته حسب طريقة استدعاء الفانكشن
📌 شوف المثال ده:
const person = {
name: 'Khater',
greet: function() {
console.log(Hello, my name is ${this.name});
}
};
person.greet(); // Hello, my name is Khater
const greet = person.greet;
greet(); // Hello, my name is undefined (لأن this هنا مش بترمز لـ person)
في حالة الـ Arrow functions, this بيبقى دايماً بيرمز للكونتكس الخارجي
📌 شوف المثال ده:
const person = {
name: 'khater',
greet: () => {
console.log(Hello, my name is ${this.name});
}
};
person.greet(); // Hello, my name is undefined (لأن this هنا مش بترمز لـ person)
خليك دايماً جاهز ومستعد لكل الأسئلة دي وذاكرها كويس عشان تكون جاهز لأي تحدي! ♥️