x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
كيف تنشئ مصفوفة في جافاسكريبت؟
الجواب / يمكن إنشاء مصفوفة باستخدام الأقواس المربعة [ ]، أو باستخدام الكلمة المفتاحية new Array.مثال:
JavaScript:
let arr1 = [1, 2, 3];
let arr2 = new Array(1, 2, 3);
. ما هو الفرق بين push وunshift؟
الجواب/push يُضيف عنصرًا إلى نهاية المصفوفة.
unshift يُضيف عنصرًا إلى بداية المصفوفة.
مثال:
JavaScript:
let arr = [2, 3];
arr.push(4); // [2, 3, 4]
arr.unshift(1); // [1, 2, 3, 4]
كيف يمكنك إزالة عنصر من مصفوفة؟
الجواب/pop () تزيل آخر عنصر في المصفوفة
Shift() تزيل أول عنصر في المصفوفة
مثال:
JavaScript:
let arr = [1, 2, 3];
arr.pop(); // [1, 2]
arr.shift(); // [2, 3]
كيف تتحقق مما إذا كان عنصر ما موجودًا في مصفوفة؟
الجواب / باستخدام includes أو indexOf.مثال:
JavaScript:
let arr = [1, 2, 3];
arr.includes(2); // true
arr.indexOf(2); // 1 (رقم ال index )
كيف تقوم بترتيب العناصر في مصفوفة؟
الجواب / باستخدام الدالة sort، التي تقوم بترتيب العناصر بترتيب تصاعدي.يمكن تخصيص الترتيب بتمرير دالة مقارنة.
مثال:
JavaScript:
let arr = [3, 1, 4, 1, 5];
arr.sort(); // [1, 1, 3, 4, 5]
JavaScript:
arr.sort((a, b) => b - a); // [5, 4, 3, 1, 1] - ترتيب تنازلي
ما هي slice وsplice؟
الجواب/slice تُعيد جزءًا من المصفوفة بدون تعديل المصفوفة الأصلية.
splice تقوم بإزالة أو استبدال عناصر من المصفوفة الأصلية.
مثال:
JavaScript:
let arr = [1, 2, 3, 4];
let sliced = arr.slice(1, 3); // [2, 3]
JavaScript:
arr.splice(1, 2); // [1, 4] (تمت إزالة العنصرين الثاني والثالث)
كيف يتم تحويل مصفوفة إلى سلسلة نصية؟
الجواب / باستخدام join لتحويل عناصر المصفوفة إلى نص بفاصل معين.مثال:
JavaScript:
let arr = [1, 2, 3];
let str = arr.join("-"); // "1-2-3"
كيف يمكنك عكس ترتيب العناصر في مصفوفة؟
الجواب/ باستخدام reverse، التي تقوم بعكس ترتيب العناصر في نفس المصفوفة الأصلية.مثال:
JavaScript:
let arr = [1, 2, 3];
arr.reverse(); // [3, 2, 1]
كيف يتم دمج مصفوفتين؟
الجواب / باستخدام الدالة concat، أو باستخدام معامل الانتشار ....مثال:
JavaScript:
let arr1 = [1, 2];
let arr2 = [3, 4];
let merged = arr1.concat(arr2); // [1, 2, 3, 4]
let merged2 = [...arr1, ...arr2]; // [1, 2, 3, 4]
كيف يمكن إزالة عناصر مكررة من مصفوفة؟
الجواب/ باستخدام Set لتحويل المصفوفة إلى مجموعة (تزيل التكرارات)، ثم تحويلها مجددًا إلى مصفوفة.مثال:
JavaScript:
let arr = [1, 2, 2, 3, 3, 3];
let uniqueArr = [...new Set(arr)]; // [1, 2, 3]
كيف يمكنك إيجاد أول عنصر يحقق شرطًا معينًا؟
الجواب/ باستخدام الدالة find، التي تُعيد أول عنصر يحقق الشرط.مثال:
JavaScript:
let arr = [1, 2, 3, 4];
let firstEven = arr.find(x => x % 2 === 0); // 2
ما هي أنواع الحلقات في JavaScript؟
الجواب /for: تستخدم عند معرفة عدد التكرارات مسبقًا.
while: تستخدم عندما ترغب في تكرار الكود طالما أن الشرط صحيح.
do...while: تشبه حلقة while ولكن يتم تنفيذ الكود مرة واحدة على الأقل قبل التحقق من الشرط.
for...in: تستخدم لتكرار خصائص الكائنات (objects).
for...of: تستخدم لتكرار العناصر في المصفوفات أو أي كائن قابل للتكرار.
. ما الفرق بين حلقة for وحلقة while ؟
الجواب/for: غالبًا ما تستخدم عندما يكون عدد التكرارات محددًا أو معروفًا مسبقًا.
while: تستخدم عندما يكون الشرط غير معروف مسبقًا، وتستمر في التكرار طالما أن الشرط صحيح.
كيف يمكن (إيقاف) الحلقة؟
الجواب/يمكنك استخدام الأمر break لإيقاف الحلقة تمامًا. على سبيل المثال:
JavaScript:
for (let i = 0; i < 10; i++) {
if (i === 5) {
break; // ينهي الحلقة عند i = 5
}
console.log(i);
}
كيف تتخطى تكرارًا واحدًا في الحلقة دون ايقافھا ؟
الجواب / يمكنك استخدام الأمر continue لتخطي تكرار محدد والانتقال إلى التكرار التالي. مثال: JavaScript:
for (let i = 0; i < 5; i++) {
if (i === 2) {
continue; // يتخطى i = 2 ويكمل
}
console.log(i);
}
كيف يمكن استخدام forEach للتكرار على عناصر المصفوفة؟
الجواب / هي دالة خاصة بالمصفوفات، تقوم بتكرار كل عنصر في المصفوفة وتنفيذ كود عليه. مثال: JavaScript:
const numbers = [1, 2, 3];
numbers.forEach(function(number) {
console.log(number);
});
ما هي الدالة (Function) في JavaScript؟
الدالة هي مجموعة من التعليمات البرمجية التي تُنفذ عند استدعائها. تُستخدم الدوال لتقسيم الكود إلى أجزاء يمكن إعادة استخدامها. JavaScript:
function greet() {
console.log("مرحباً!");
}
greet(); // تستدعى هنا الدالة
كيف يمكن تعريف دالة في JavaScript؟
يمكن تعريف دالة باستخدام الكلمة المفتاحية function، يليها اسم الدالة، ثم الأقواس التي يمكن أن تحتوي على معاملات، وأخيراً الأقواس المعقوفة التي تحتوي على كود الدالة. JavaScript:
function sum(a, b) {
return a + b; // إرجاع مجموع القيمتين
}
كيف يتم استدعاء دالة؟
يتم استدعاء الدالة باستخدام اسمها متبوعاً بالأقواس. JavaScript:
sum(3, 5); // الناتج 8
ما الفرق بين الدوال العادية (Regular Functions) والدوال السهمية (Arrow Functions)؟
الدوال العادية: JavaScript:
function sayHello(name) {
return مرحباً، ${name}!;
}
الدوال السهمية:
JavaScript:
const sayHello = (name) => مرحباً، ${name}!;
هل يمكن لدالة أن تكون داخل دالة أخرى؟
نعم، يمكن تعريف دالة داخل دالة أخرى، وتسمى بالدالة الداخلية. JavaScript:
function outerFunction(x) {
function innerFunction(y) {
return x + y;
}
return innerFunction;
}
const add5 = outerFunction(5);
console.log(add5(10)); // الناتج 15
ما الفرق بين return و console.log؟
الجواب/return: تُستخدم لإرجاع قيمة من الدالة. عند استخدام return، يتوقف تنفيذ الدالة.
console.log: تُستخدم لطباعة قيمة في وحدة التحكم، لكنها لا تُرجع أي شيء.
JavaScript:
function sum(a, b) {
return a + b; // ترجع المجموع
console.log("لن يتم تنفيذ هذا الكود");
}
هل يمكن لدالة أن تستدعي نفسها؟
نعم، هذا يسمى التعريف الذاتي أو التكرار (Recursion). JavaScript:
function factorial(n) {
if (n === 0) return 1;
return n * factorial(n - 1);
}
console.log(factorial(5)); // الناتج 120
ما الفرق بين الدالة المُعرّفة (Function Declaration) والدالة المُخزّنة (Function Expression)؟
الجواب/Function Declaration:
JavaScript:
function greet() {
console.log("مرحباً!");
}
Function Expression:
JavaScript:
const greet = function () {
console.log("مرحباً!");
};
كيف يمكن لدالة قبول عدد غير معروف من المعاملات؟
باستخدام معامل الانتشار (Rest Parameters). JavaScript:
function sumAll(...numbers) {
return numbers.reduce((sum, num) => sum + num, 0);
}
console.log(sumAll(1, 2, 3, 4)); // الناتج 10
ما هي الـ Arrow Function؟
هي طريقة مختصرة لتعريف الدوال في JavaScript، تم تقديمها في ES6. تُستخدم لتعريف الدوال بطريقة أكثر بساطة وتلقائية، وتتميز بعدم وجود this الخاص بها.كيف تختلف الـ Arrow Function عن الدوال التقليدية؟
لا تحتوي على الكلمة المفتاحية this الخاصة بها، بل تأخذ السياق المحيط بها.لا يمكن استخدامها كـ constructor (أي لا تدعم new).
لا تحتوي على الكلمة المفتاحية arguments.
ما هو الشكل العام للـ Arrow Function؟
الجواب/ JavaScript:
const add = (a, b) => a + b;
// مع قوسين
const greet = (name) => Hello, ${name}!;
// بدون قوسين (إذا كان هناك معامل واحد فقط)
const square = x => x * x;
// بدون قوسين وبدون أقواس الكتل (إذا كان التعبير من سطر واحد)
هل يمكن كتابة دوال متعددة الأسطر باستخدام Arrow Function؟
نعم، باستخدام أقواس الكتل {} مع استخدام return إذا لم يكن التعبير مباشرة. JavaScript:
const multiply = (a, b) => {
const result = a * b;
return result;
};
ما هي الـ Higher-Order Function؟
هي دالة تأخذ دوال أخرى كمعاملات أو تُرجع دالة أخرى كنتيجة. تُستخدم كثيرًا في البرمجة الوظيفية (Functional Programming).لماذا تُستخدم الـ Higher-Order Functions؟
لجعل الكود أكثر قابلية لإعادة الاستخدام.لتجنب التكرار.
لإدارة العمليات المعقدة باستخدام دوال بسيطة مثل map, filter, و reduce.
أعطِ مثالًا لدالة Higher-Order Function.
مثال باستخدام map: JavaScript:
const numbers = [1, 2, 3, 4];
const squared = numbers.map(num => num * num);
console.log(squared); // [1, 4, 9, 16]
ما الفرق بين map و forEach؟
الجواب/
map تُرجع مصفوفة جديدة بناءً على المصفوفة الأصلية.
forEach تنفذ وظيفة على كل عنصر دون إرجاع قيمة جديدة.
كيف يعمل reduce؟
تُستخدم reduce لتجميع أو حساب قيمة واحدة من المصفوفة. JavaScript:
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((accumulator, current) => accumulator + current, 0);
console.log(sum); // 10
هل يمكن أن تكون Higher-Order Function دالة تُرجع دالة؟
نعم، مثال: JavaScript:
const createMultiplier = multiplier => number => number * multiplier;
const double = createMultiplier(2);
console.log(double(5)); // 10
const triple = createMultiplier(3);
console.log(triple(5)); // 15
كيف تُستخدم Arrow Functions مع Higher-Order Functions؟
يتم استخدام Arrow Functions عادة كمعاملات داخل Higher-Order Functions لأنها قصيرة وبسيطة: JavaScript:
const names = ['Ali', 'Sara', 'John'];
const greetings = names.map(name => Hello, ${name}!);
console.log(greetings); // ["Hello, Ali!", "Hello, Sara!", "Hello, John!"]
كيف يساعد الجمع بينهما في كتابة كود مختصر؟
عند استخدام دوال مثل filter أو reduce أو map مع Arrow Functions، يصبح الكود أكثر وضوحًا وأقل في عدد الأسطر: JavaScript:
const evenNumbers = [1, 2, 3, 4, 5, 6].filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4, 6]
ما هو الكائن (Object) في JavaScript؟
الكائن هو نوع بيانات في JavaScript يُستخدم لتخزين القيم في شكل مفتاح-قيمة (key-value). الكائنات هي حجر الأساس في JavaScript، حيث يمكن أن تحتوي على خصائص (properties) وطرق (methods). JavaScript:
let person = {
name: "John",
age: 30,
greet: function() {
console.log("Hello!");
}
};
كيف يمكن إنشاء كائن في JavaScript؟
هناك عدة طرق لإنشاء كائن:1. باستخدام المعامل {}:
JavaScript:
let obj = {};
2. باستخدام Object Constructor:
JavaScript:
let obj = new Object();
3. باستخدام Object.create:
JavaScript:
let obj = Object.create(null);
ما الفرق بين خاصية ووسيلة في الكائن؟
الخاصية (Property): هي متغير مرتبط بالكائن.الوسيلة (Method): هي دالة مرتبطة بالكائن.
JavaScript:
let car = {
brand: "Toyota", // خاصية
start: function() { // وسيلة
console.log("Car started");
}
};
كيف يمكن الوصول إلى خصائص الكائن؟
الإجابة:1. باستخدام النقطة (Dot Notation):
console.log(car.brand);
2. باستخدام الأقواس المربعة (Bracket Notation):
console.log(car["brand"]);
كيف يمكن إضافة أو تعديل خصائص الكائن؟
الإجابة: JavaScript:
let obj = {};
obj.name = "John"; // إضافة
obj.name = "Doe"; // تعديل
كيف يمكن حذف خاصية من الكائن؟
الإجابة: JavaScript:
delete obj.name;
console.log(obj.name); // undefined
. ما هو الفرق بين Object.keys و Object.values و Object.entries؟
الإجابة:Object.keys: تُرجع جميع المفاتيح (keys) كصفيف.
Object.values: تُرجع جميع القيم (values) كصفيف.
Object.entries: تُرجع مصفوفة تحتوي على أزواج المفتاح والقيمة.
JavaScript:
let obj = { a: 1, b: 2 };
console.log(Object.keys(obj)); // ["a", "b"]
console.log(Object.values(obj)); // [1, 2]
console.log(Object.entries(obj)); // [["a", 1], ["b", 2]]
ما هو الفرق بين hasOwnProperty و in؟
الإجابة:hasOwnProperty: يتحقق مما إذا كانت الخاصية موجودة مباشرة في الكائن نفسه (وليس في البروتوتايب).
in: يتحقق مما إذا كانت الخاصية موجودة في الكائن أو في سلسلة البروتوتايب.
JavaScript:
let obj = { a: 1 };
console.log(obj.hasOwnProperty("a")); // true
console.log("a" in obj); // true
كيف يمكن نسخ كائن؟
باستخدام Object.assign: JavaScript:
let obj1 = { a: 1 };
let obj2 = Object.assign({}, obj1);
باستخدام Spread Operator:
JavaScript:
let obj1 = { a: 1 };
let obj2 = { ...obj1 };
ما هو الفرق بين النسخ السطحي (Shallow Copy) والنسخ العميق (Deep Copy)؟
النسخ السطحي: ينسخ الخصائص الأساسية فقط. إذا كانت هناك خصائص كائن داخل الكائن الأصلي، يتم نسخ المرجع فقط.النسخ العميق: ينسخ الكائن بالكامل بما في ذلك الكائنات المتداخلة.
JavaScript:
let obj1 = { a: 1, b: { c: 2 } };
let shallowCopy = { ...obj1 }; // نسخ سطحي
let deepCopy = JSON.parse(JSON.stringify(obj1)); // نسخ عميق
ما هو Object.freeze و Object.seal؟
الجوابObject.freeze: يجعل الكائن غير قابل للتعديل (لا يمكن إضافة أو تعديل أو حذف الخصائص).
JavaScript:
let obj = { a: 1 };
Object.freeze(obj);
obj.a = 2; // لن يتغير
Object.seal: يمنع إضافة أو حذف خصائص جديدة، لكن يمكن تعديل الخصائص الحالية.
JavaScript:
let obj = { a: 1 };
Object.seal(obj);
obj.a = 2; // ممكن
delete obj.a; // غير ممكن
ما هو this داخل كائن؟
الكلمة المفتاحية this تشير إلى الكائن الحالي الذي يتم استدعاء الوسيلة عليه. JavaScript:
let obj = {
name: "John",
greet: function() {
console.log(this.name);
}
};
obj.greet(); // "John"
كيف يمكن دمج كائنين أو أكثر؟
الإجابة:باستخدام Object.assign:
JavaScript:
let obj1 = { a: 1 };
let obj2 = { b: 2 };
let merged = Object.assign({}, obj1, obj2);
باستخدام Spread Operator:
JavaScript:
let merged = { ...obj1, ...obj2 };
ما هو البروتوتايب (Prototype) في JavaScript؟
الإجابة: البروتوتايب هو آلية تسمح للكائنات في JavaScript بمشاركة الخصائص والوسائل. كل كائن لديه مرجع إلى كائن آخر يُسمى البروتوتايب. JavaScript:
let obj = { a: 1 };
console.log(obj.proto); // Object prototype
كيف يمكن التحقق مما إذا كان كائن هو بروتوتايب لكائن آخر؟
الإجابة: باستخدام isPrototypeOf: JavaScript:
let obj1 = {};
let obj2 = Object.create(obj1);
console.log(obj1.isPrototypeOf(obj2)); // true
ما هو الفرق بين Object.defineProperty و Object.defineProperties؟
الإجابة:Object.defineProperty: تُستخدم لتحديد خاصية واحدة بكائن مع خيارات التحكم.
Object.defineProperties: تُستخدم لتحديد خصائص متعددة.