الدرس السادس: أهم الأسئلة حول لغة جافا سكريبت



أهم الأسئلة والأجوبة حول لغة جافا سكريبت JavaScript 

تعتبر لغة جافا سكريبت من لغات البرمجة عالية المستوى التي تعمل من طرف الخادم والسيرفر بذات الوقت وتُستخدم لغة جافا سكريبت JavaScript على نطاق واسع لإنشاء تطبيقات ويب متنوعة كما توفر فرصًا عمل كبيرة لمتعلمها.

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


ما هي  جافا سكريبت JavaScript؟

 جافا سكريبت هي لغة برمجة نصية تعمل من جانب العميل (ويمكن أن تعمل من جانب الخادم من خلال تقنية Node.JS) وهي تضمن في صفحات HTML وتفهمها متصفحات الويب كما تعد لغة جافا سكريبت لغة برمجة غرضية التوجه Object-Oriented Programming أو اختصارًا OOP. 


 ما هو الفرق بين جافا وجافا سكريبت؟

رغم تشابه الأسماء بين لغة البرمجة جافا وجافا سكريبت إلا أن هاتان اللغتان ليستا مترابطتين على الإطلاق ومصممتان لهدف مختلف.

فجافا هي لغة برمجة عامة وغرضية التوجه (OOP) مثل لغات البرمجة مثل بايثون Python أو C  بينما تعتبر لغة جافا سكريبت لغة برمجة نصية تعمل من جانب العميل، فهي  بشكل أساسي عبارة عن أكواد مشفرة يمكن إدراجها  في صفحات HTML لجعلها أكثر تفاعلية ودينامكية.

 لماذا تستخدم جافا سكريبت JavaScript؟

من أبرز استخدامات جافا سكريبت JavaScript تطوير واجهات المستخدم الديناميكية وتطوير تطبيقات الويب والتحكم في المتصفح والاتصال بالخوادم (من خلال تقنية AJAX) كما تستخدم في تطوير ألعاب المتصفح التي تعمل على الويب وبرمجة تطبيقات الجوال والعديد من التطبيقات الأخرى.

ما الشركة التي طورت JavaScript؟

Netscape هي شركة برمجيات طورت JavaScript.


 ما هي أنواع البيانات في  جافا سكريبت  JavaScript Data types؟

توجد 7 أنواع للبيانات في جافا سكريبت:

  1. Number: يمثِّل الأعداد بكل أنواعها الصحيحة والعشرية.
  2. String: يمثِّل السلاسل النصية.
  3. Boolean: يمثِّل القيم المنطقية (صح / خطأ)
  4. النوع Object ويمثل كائن برمجي.
  5. النوع symbol (رمز) لتشكيل معرّف (identifier) مُميَّز للكائنات. 
  6. null: القيمة الخالية وهو نوع خاص يملك قيمة وحيدة وهي القيمة null
  7. Undefined: نوع خاص في جافا سكريبت يملك قيمة وحيدة وهي undefined. وتعني قيمة غير معرفة تسند للمتغيرات التي لم تسند قيمة محددة لها بعد.

ما وظيفة الدالة typeof في جافا سكريبت؟

الدالة typeof تمكننا من معرفة أنوع القيم المخزنة في المتغيرات فعند استدعاء typeof(x)‎ أو typeof x  مع متغير ما سيعيد الاستدعاء سلسلة نصية تحوي اسم النوع، مثلString أو Number وفي حال مررنا لها القيمة null سنحصل على القيمة object.

 ما هو استخدام وظيفة isNan؟

isNan هي دالة برمجية تعيد صحيح true إذا لم يكن البارامتر رقم وإلا فهي تعيد القيمة خطأ false.

ما معنى Not-a-Number أو NAN في جافا سكريبت؟

هو رقم في جافا سكريبت يسمى اللانهاية السالبة ويستخدم  للإشارة إلى قيمة غير صالحة رياضياً. ونحصل عليه عندما تقوم بعملية رياضية غير صحيحة قسمة الرقم السالب على صفر أو إجراء عملية رياضية غير ممكنة ويستخدم لمنع وقوع أخطاء في البرنامج نتيجة عمليات غير صحيحة. يمكنك التحقق من وجود اللانهاية السالبة باستخدام الدالة isNaN في جافا سكريبت للتأكد مما إذا كانت القيمة تمثل NaN أم لا.
وبالعموم يجب تجنب استخدام اللانهاية السالبة في عمليات الحساب الرياضية وضمان تحقق البيانات والمدخلات قبل استخدامها لتجنب الأخطاء في التطبيقات.


أيهما أسرع JavaScript أم ASP؟

بما أن جافاسكريبت لغة من جانب العميل و ASP لغة من جانب الخادم فجافا سكريبت تعد أسرع لأنها لا تحتاج إلى مساعدة من سيرفر الويب لتنفيذها. لكن عند مقارنة  nodejs مع جافا سكريبت Javascript  فتعد  nodejs أبطأ من جافا سكريبت لأنها من جانب الخادم.


هل من الممكن كتابة أو تقسيم كود جافا سكريبت إلى عدة أسطر؟

نعم يمكن إجراء كسر داخل عبارة جافا سكريبت باستخدام شرطة مائلة للخلف، "\" في نهاية السطر الأول.

مثال:

document.write("This is \a js program"); 

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

 

ما هي المتغيرات غير المعرفة أو غير المعلنة والمتغيرات غير محددة القيمة؟

  • المتغيرات غير المعلنة هي تلك التي لا توجد في البرنامج ولم يتم التصريح عنها وفي حال حاول البرنامج قراءة قيمة متغير غير معرف  فسيتم عرض خطأ في وقت التشغيل.
  • المتغيرات غير محددة القيمة هي تلك التي تم التصريح عنها في البرنامج ولكن لم يتم إسناد أي قيمة لها. إذا حاول البرنامج قراءة قيمة متغير غير محدد القيمة، يتم إرجاع قيمة غير محددة.


 اكتب كود جافا سكريبت لإضافة عناصر جديدة بشكل ديناميكي؟


<html>

<head>

<title> t1 </title>

<script type = "text / javascript">

  function addNode () 

{var newP = document. createElement ("p") ;

  var textNode = document.createTextNode ("هذه عقدة نصية جديدة")؛

  newP.appendChild (textNode) ;

 document.getElementById ("firstP"). appendChild (newP) ;

 }

</script> 

</head>

<body> <p id = "firstP"> firstP <p> </body>

</html>


 ما هي المتغيرات العامة؟ كيف يتم التصريح عن هذه المتغيرات؟

المتغيرات العامة هي متغيرات تكون متاحة في كامل الكود بحيث لا يكون لها نطاق محدد. 

لتعريف متغير عام في جافا سكريبت، لا تحتاج إلى استخدام كلمة "global". يمكن تعريف متغير عام دون أن نسبقه بكلمة var كالتالي:

x= "Test";

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


ما هي المشاكل التي قد تواجهها في حال استخدمت المتغيرات العامة في الكود؟

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

 ما هو معنى prompt box في جافا سكريبت؟

هو صندوق إدخال يسمح للمستخدم بإدخال قيم الدخل من خلال توفير مربع نصي ويمكن توفير تسمية ومربع لإدخال النصوص أو الأرقام.



مثال:


<html>

<head>

<script type = "text/javascript">

function fun() {

prompt ("هذا مربع إدخال", "Hello world");

}

</script>

</head>


<body>

<p> انقر على الزر لترى النتيجة</p>

<form>

<input type = "button" value = "Click me" onclick = "fun();" />

</form>

</body>

</html>


 ما معنى الكمة المحجوزة (this) في جافا سكريبت؟

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

 ما هو عمل الموقتات timers في جافاسكريبت؟

تُستخدم الموقتات لتنفيذ جزء من التعليمات البرمجية في وقت محدد، أو لتكرار الكود في فترة زمنية معينة. 

يتم ذلك باستخدام الدوال التالية:

  1. setTimeout (function, delay): لبدء مؤقت يستدعي وظيفة معينة بعد التأخير المذكور.
  2.  setInterval (function, delay):  بتنفيذ الوظيفة المحددة بشكل متكرر في التأخير المذكور وتتوقف فقط عند الإلغاء.
  3.  clearInterval: تقوم وظيفة clearInterval (id) بإرشاد عداد الوقت إلى التوقف.

يتم تشغيل المؤقتات ضمن مجرى تنفيذ واحد single thread وبالتالي قد يتم وضع الأحداث في قائمة انتظار  لانتظار تنفيذها.


ما هو الرمز المستخدم لكتابة التعليقات في جافا سكريبت؟

// للتعليقات ذات سطر واحد 

/*  للتعليقات 

  متعددة

 الأسطر 

* /

ما هو الفرق بين SessionState و ViewState؟ 

  • ViewState خاصة بصفحة page في الجلسة أي أنها تحتفظ بقيم عناصر صفحة العميل في المتصفح وتُستخدم أثناء عملية postback وإذا طلب المستخدم صفحة أخرى، فإن البيانات الخاصة بالصفحة السابقة لن تعود متاحة.
  • SessionState خاصة بالبيانات الخاصة بالمستخدم user-specific data والتي يمكن الوصول إليها عبر جميع صفحات تطبيق الويب وهي تحتفظ ببيانات معينة على الخادم وتكون متاحة للمستخدم حتى انتهاء الجلسة أو إغلاق المستعرض.
بمعنى آخرالاختلاف بين SessionState وViewState:
  • تتيح ViewState الاحتفاظ بحالة الصفحة في المتصفح، وتختفي البيانات عند تحميل صفحة جديدة.
  •  تخزن SessionState بيانات الجلسة للمستخدم وتحتفظ بها على الخادم. تظل هذه البيانات متاحة حتى يُغلق المستعرض أو تنتهي الجلسة.

ما هو المعامل ===؟

يسمى === عامل مساواة صارم والذي يرجع القيمة true عندما يكون للبارامترين نفس القيمة بدون تحويل الأنواع.

ما هي النماذج في جافا سكريبت؟

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



كود برمجي لنموذج في جافا سكريبت

<!DOCTYPE html>

<html dir="rtl" lang="ar">

<head>

  <title>نموذج بسيط</title>

</head>

<body>

<h2>نموذج بسيط</h2>

<form id="myForm">

  <label for="name">الاسم:</label>

  <input type="text" id="name" name="name"><br><br>


  <label for="email">البريد الإلكتروني:</label>

  <input type="email" id="email" name="email"><br><br>


  <input type="button" value="إرسال" onclick="displayData()">

</form>


<p id="result"></p>


<script>

function displayData() {

  var name = document.getElementById("name").value;

  var email = document.getElementById("email").value;

  

  var result = "الاسم: " + name + "<br>البريد الإلكتروني: " + email;

  document.getElementById("result").innerHTML = result;

}

</script>

</body>

</html>


 كيف يمكنك إرسال بيانات نموذج باستخدام جافا  سكريبت JavaScript؟

لإرسال بيانات النموذج في HTML نحدد action ليشير إلى عنوان الخادم الذي سيستقبل البيانات ونستخدم `method="post" لتحديد طريقة إرسال البيانات وننشئ زر إرسال عندما ينقر المستخدم على هذا الزر ترسل البيانات من النموذج إلى الخادم المحدد في action لمعالجتها هناك.

لإرسال نموذج باستخدام JavaScript من الصفحة للخادم نصل  إلى النماذج على الصفحة باستخدام document.formsمع فهرس لنموذج معين، والفهرس يبدأ من 0.

document.form[0].submit()

documentهو الكائن الأساسي في جافا سكريبت الذي يمثل الصفحة الحالية وform[0] يشير إلى العنصر (form) الأول في صفحة HTML والدالة submit هي الدالة التي تُستدعى لإرسال النموذج إلى الخادم. عند استدعائها، سيتم تشغيل إجراء إرسال البيانات من النموذج إلى الخادم.

هل يدعم JavaScript التحويل التلقائي للأنماط؟

نعم، يدعم JavaScript التحويل التلقائي  للنمط (Automatic type conversion) وهي الطريقة الشائعة لتحويل الأنماط التي يستخدمها مطورو جافا سكريبت.

كيف يمكن تغيير نمط بيانات أوصنف لعنصر في جافا سكريبت؟

يمكن القيام بذلك بإحدى الطريقتين التاليتين:


document.getElementById("myText"). style. fontSize = "20";

document. getElementById ("myText"). className = "anyclass";


 كيف تقرأ وتكتب ملفًا باستخدام JavaScript؟

"في جافا سكريبت، لا يمكن قراءة أو كتابة الملفات في المتصفح، ولكن يمكن القيام بذلك في الخادم باستخدام وحدة الـ fs في Node.js. يُستخدم fs.readFile() لقراءة ملف وتخزينه في الذاكرة، بينما يُستخدم fs.writeFile() لكتابة بيانات في ملف.
 
فيما يلي مثال برمجي يوضح كيفية استخدام هذه الأساليب

const fs = require("fs");

// دالة لكتابة الملف

function writeFile() {

  fs.writeFile("sample.txt", "Let's write a few sentences in the file", function (err) { 

    if (err) { 

      return console.error(err); 

    }

    console.log("Finished writing");

    readAndDisplayFile();

  });

}

// دالة لقراءة الملف وعرضه

function readAndDisplayFile() {

  fs.readFile("sample.txt", function (err, data) { 

    if (err) { 

      return console.error(err); 

    } 

    console.log("Data read: " + data.toString());

  });

}

console.log("Writing into a file");

writeFile();


ما هي أنواع الحلقات في JavaScript؟

هناك 3 أشكال مختلفة للحلقات  في جافا سكريبت:

1. For تستخدم لتنفيذ كود معين عدد محدد من المرات.

2. While تكرر تنفيذ كود ما طالما الشرط مستمر في التحقق ويفحص الشرط قبل بدء تنفيذ الكود.

3. Do-While:  تشبه while لكنها تضمن تنفيذ الكود مرة واحدة على الأقل حتى يتم التحقق من الشرط. بمعنى آخر، الكود يتم تنفيذه ثم يفحص الشرط.

 ما معنى مصطلح نوع المتغير Variable typing في جافا سكريبت؟

هو مصطلح يدل على طبيعة جافا سكريبت الديناميكية أي أن المتغيرات في جافا سكريبت يمكن أن تتغير نوعها ديناميكياً أثناء تنفيذ البرنامج فلا يلزم المبرمج بتحديد نوع المتغير عند إنشاءه. 

على سبيل المثال، يمكن لمتغير أن يحمل قيمة نصية في لحظة ثم يتغير ليحمل قيمة رقمية في لحظة أخرى والعكس صحيح.

مثال:

//This is called variable typing.

x = 10;

x = "string;"


كيف يمكنك تحويل سلسلة نصية إلى عدد صحيح في JavaScript؟

تُستخدم الدالة ()parseInt لتحويل الأرقام بين القواعد المختلفة. 

تأخذ ()parseInt السلسلة المراد تحويلها كبرامتر أول. البارامتر الثاني هو أساس السلسلة المحددة.

parseInt ("4F"، 16) ;

ما الفرق بين== و ===؟

  • يتحقق == فقط من المساواة في القيمة ويسمى Equality Operator.
  •  بينما يسمى  ===  Strict Equality Operator هو اختبار مساواة أكثر صرامة ويعيد خطأ إذا كانت قيمة المتغيرين أو نوع المتغيرين مختلفين.
مثال برمجي:
console.log(5 == '5'); // يُعادل true لأنه يقارن القيم فقط
console.log(5 == 5);   // يُعادل true لأنهما نفس القيمة
console.log(5 == 6);   // يُعادل false لأنهما قيم مختلفة


console.log(5 === '5'); // يُعادل false لأنه يقارن القيم والأنواع
console.log(5 === 5);   // يُعادل true لأنهما نفس القيمة ونفس النوع
console.log(5 === 6);   // يُعادل false لأنهما قيم مختلفة

const num = 5;
const str = '5';

console.log(num == str); // يُعادل true لأنه يقارن القيم فقط
console.log(num === str); // يُعادل false لأنه يقارن القيم والأنواع

ماذا ستكون نتيجة 3 + 2 + "7" في جافا سكريبت

بما أن 3 و 2 عددان صحيحان، فسيتم إضافتهما عدديًا. وبما أن "7" عبارة عن سلسلة نصية فسيتم إجراء دمجها وتكون النتيجة 57.


كيف يتم الكشف عن نظام التشغيل على جهاز العميل باستخدام جافا سكريبت؟

من أجل اكتشاف نظام التشغيل على جهاز العميل  يجب استخدام Platform string (property).

ما المقصود ب NULL في جافا سكريبت؟

يتم استخدام القيمة NULL لتمثيل لا قيمة أو لا كائن أو بمعنى آخر للإشارة إلى عدم وجود قيمة مُعيَّنة للمتغير. على سبيل المثال، إذا كان لدي متغير يمثل العمر ولكن لم تكن لديك معلومات عنه بعد، يمكنك تعيينه إلى `null`:

let age = null;

هذا يعني أنه ليس لدي معلومات عن العمر حتى الآن. ولكن يجب معاملةnull بعناية لتجنب الأخطاء والتأكد من أنه تم التحقق من وجود قيمة قبل استخدام المتغير. 


ما هي وظيفة عامل الحذف delete operator؟

 تستخدم الكلمة delete لحذف الخاصية وكذلك قيمتها.


var student= {age:10, batch:"ABC"};

delete student. age;


 ما هي القيمة غير المعرفة Undefined في جافا سكريبت؟

تعني القيمة غير المحددة أن:

  •  المتغير المستخدم في الشيفرة غير موجود.
  • لم يتم تعيين المتغير لأي قيمة.
  • الخاصية غير موجودة.


ما هي جميع أنواع الصناديق المنبثقة المتوفرة في جافا سكريبت؟

  • Alert: لعرض رسالة تنبيه للمستخدم بمحتوى ثابت، ولا تعطي المستخدم خيارات للرد.
  • Confirm:  لعرض رسالة تأكيد مع خيارات موافق و إلغاء بحيث تعيد قيمة true إذا نقر المستخدم على "موافق" وfalse إذا نقر على إلغاء.
  • Prompt: عرض رسالة توجيه المستخدم لإدخال قيمة نصية، وتسمح بإدخال النص وتُعيد القيمة المُدخلة عند النقر على "موافق" أو null إذا نقر على "إلغاء".

ما فائدة Void (0)؟

`void(0)` تُستخدم لمنع الرابط من تنفيذ الانتقال الافتراضي إلى صفحة جديدة عند النقر عليه، مما يتيح تنفيذ إجراءات جافا سكريبت دون تغيير الصفحة ولمنع الصفحة من التحديث، ويتم تمرير المعامل "صفر" أثناء الاتصال ولاستدعاء طريقة أخرى بدون تحديث الصفحة.


 كيف يمكن إجبار الصفحة على تحميل صفحة أخرى في جافا سكريبت؟

كيف يمكن إجبار الصفحة على تحميل صفحة أخرى في جافا سكريبت؟

يمكن استخدام خاصية window.location داخل الوس script لإجبار تحميل صفحة أخرى بواسطة جافا سكريبت بالصيغة التالية:


<script>

    window.location = <المسار / العنوان>

</script>


مثال:


<script>

    window.location = "https://www.example.com/"

</script>


tمن خلال تغيير خاصية window.location داخل جافا سكريبت، يمكننا تغيير عنوان URL للنافذة وبالتالي تحميل أي صفحة بقوة من خلال جافا سكريبت دون الحاجة إلى استخدام href.


الخلاصة

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

كل التوفيق






Next Post Previous Post
No Comment
Add Comment
comment url