English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل الأساسيات لـ JavaScript

أجسام JavaScript

وظائف JavaScript

HTML DOM لـ JS

BOM لمتصفح JS

دليل الأساسيات لـ AJAX

دليل JavaScript

أخطاء شائعة في JavaScript

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

استخدام محول التخصيص بشكل غير متوقع

إذا لم نكون حذرين ونستخدم في جملة if محول التخصيص (=) بدلاً من محول المقارنة (==)، قد ينتج برنامج JavaScript نتائج غير متوقعة.

إذا لم يكن num يساوي 20، فإن جملة if هذه ستعود إلى false:

num = 0;
إذا (num == 20)
اختبار النظر في‹/›

رجع هذا جملة if إلى true لأن 20 هو true:

num = 0;
إذا (num = 20)
اختبار النظر في‹/›

العطاء دائمًا العودة إلى القيمة المُعطاة.

استخدام "==" بدلاً من "==="

عندما يبدأ الناس في استخدام JavaScript، قد يكون هذا هو الخطأ الأكثر شيوعًا.

في المقارنة العادية، لا يهم نوع البيانات. إذا رجع جملة if إلى true:

a = 20;
ب = "20";
إذا (a == b)
اختبار النظر في‹/›

في المقارنة الصارمة، يهم نوع البيانات حقًا. يرجع هذا الجملة if إلى false:

a = 20;
ب = "20";
إذا (a === b)
اختبار النظر في‹/›

الفرق بين (a == b) و (a === b) هو:

  • == إذا كان a يساوي b، يتم العودة إلى true

  • === إذا كان a يساوي b وكانا ينتميان إلىنفس النوع، يتم العودة إلى true

عادةً، يجب أن تستخدم دائمًا === الذي يُسمى أيضًا بعميل التطابق الصارم أو عميل التطابق.

الجمع والتركيب المربك

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

إضافة إلى ذلكيتمحور حول إضافةالرقم.

التركيبيتمحور حول إضافةالنص.

لذلك، إضافة الرقم كرقم وإضافة الرقم كنص سيؤديان إلى نتائج مختلفة:

var a = 10;
var b = 5;
var c = a + b; // c = 15
var a = 10;
var b = "5";
var c = a + b; // c = "105"
اختبار النظر في‹/›

استخدام غير صحيح للـ float

جميع الأرقام في JavaScript يتم تخزينها كأرقام عشريات 64 بت.

جميع لغات البرمجة (بما في ذلك JavaScript) تواجه صعوبة في القيم الموجبة العالية الدقة:

var a = 0.1;
var b = 0.2;
var c = a + b; //结果是 0.3
اختبار النظر في‹/›

لحل المشكلة المذكورة أعلاه،يساعد في الضرب والقسمة:

var c = (a * 10 + b * 10) / 10; // c = 0.3
اختبار النظر في‹/›

تجزئة النصوص في JavaScript

سيسمح لك JavaScript بتجزئة الجمل إلى سطرين:

var str =
"w3codebox Tutorial",
اختبار النظر في‹/›

لكن،قطع جملة النص في منتصفها لن يكون له تأثير:

var str = "w3codebox",
Tutorial";
اختبار النظر في‹/›

إذا كان من الضروري قطع جملة النص،فمن الضروري استخدام "الكسرة" (حرف التفاصيل):

var str = "w3codebox \",
Tutorial";
اختبار النظر في‹/›

    حل آخر هو استخدامالنصوص النمطية(علامات التكرار ``)النصوص.هذه تزيل الحاجة إلى تفاعل النصوص الطويلة:

var str = `Air Pollution is introduction of chemicals to the
الغلاف الجوي.إنه يضر بالتوازن البيئي ويؤدي
عدة الأمراض.`;
اختبار النظر في‹/›

نقطة السطر في الموضع الخطأ

بسبب وضع نقطة السطر بشكل غير صحيح،سيتم تنفيذ الكود التالي مهما كان قيمة num:

if (num === 45);
{
  //كتلة برمجية  
}
اختبار النظر في‹/›

تعريف ينتهي بكومياء

الكومياء في نهاية تعريف العنصر والقائمة هي قانونية في ECMAScript 5.

let fruits = ["Apple", "Mango", "Banana", "Orange",];//قائمة
let user = {firstName:"Vishal", lastName:"Choudhary", age:22,};//عنصر

لكن،إضافة كومياء في نهاية القائمة،سيؤدي إنترنت إكسبلورر 8 إلى التدهور.

JSON لا يسمح بالكومياء المتابعة.

المجال الديناميكي

JavaScript لا يخلق نطاقًا جديدًا لكل جزء من الكود.

تطبيق في العديد من لغات البرمجة، ولكن لا يتم تطبيقها في JavaScript.

للمعادلة (var i = 0; i < 10; i++) {
  // code some
}
document.write(i); // هذا الناتج سيكون ماذا؟
اختبار النظر في‹/›

استخدامletالكلمة المفتاحية تخلق نطاقًا جديدًا لكل جزء من الكود:

للمعادلة (let i = 0; i < 10; i++) {
  // code some
}
document.write(i); // هذا الناتج سيكون ماذا؟
اختبار النظر في‹/›

الفرق بين null وundefined

undefinedالقيمة تشير إلى عدم تخصيص أي قيمة للمتغير، أو عدم وجود متغير معلن.

nullالقيمة تشير إلى عدم وجود أي قيمة للعنصر.

هذا يجعل اختبار ما إذا كان العنصر فارغًا صعبًا بعض الشيء.

من خلال اختبار ما إذا كان النوعundefined، لتستطيع اختبار ما إذا كان العنصر موجودًا:

إذا (typeof myObj === "undefined")
اختبار النظر في‹/›

    لكن لا يمكنك اختبار ما إذا كان العنصرnull، لأن إذا كان العنصرundefined، سيتم إطلاق خطأ:

إذا (myObj === null)
اختبار النظر في‹/›

لحل هذه المشكلة، يجب اختبار ما إذا كان العنصرundefined، وليسnull:

إذا (typeof myObj !== "undefined" && myObj !== null)
اختبار النظر في‹/›