
في بعض الأحيان تكون عملية كتابة شفرة جافا سكريبت صعبة ، وفي بعض الأحيان يكون الأمر مخيفًا ، وهو أمر مألوف لدى العديد من المطورين. في هذه العملية ، تنشأ أخطاء لا محالة ، وغالبا ما تتكرر بعضها. يتحدث المقال ، المصمم للمطورين المبتدئين ، عن هذه الأخطاء وكيفية حلها. للتوضيح ، يتم أخذ أسماء الوظائف والخصائص والأشياء من
أغنية شعبية . كل هذا يساعد على تذكر بسرعة كيفية إصلاح الأخطاء الشائعة.
نذكرك: لجميع قراء "Habr" - خصم بقيمة 10،000 روبل عند التسجيل في أي دورة تدريبية في Skillbox باستخدام الرمز الترويجي "Habr".
توصي Skillbox بما يلي: دورة عملية "Mobile Developer PRO" .
TypeError: خاصية غير محددة
let girl = { name: "Lucky", location: "Hollywood", profession: "star", thingsMissingInHerLife: true, lovely: true, cry: function() { return "cry, cry, cries in her lonely heart" } } console.log(girl.named.lucky)
نموذج التعليمة البرمجية أعلاه يطرح TypeError Uncaught: لا يمكن قراءة الخاصية 'محظوظ' من خطأ غير معروف. المشكلة هي أن كائن الفتاة لا يحتوي على خاصية مسماة ، على الرغم من وجود خاصية اسم. وبما أن الخاصية girl.name غير محددة ، فمن المستحيل الوصول إليها ، لأنها غير موجودة رسميًا. ولكن إذا استبدلت girl.name.lucky بـ girl.name ، فسيعمل كل شيء وسيعود البرنامج Lucky.
قراءة المزيد عن الخصائص
هنا .
طرق لإصلاح أخطاء TypeError
تحدث أخطاء TypeError عندما يحاول مبرمج تنفيذ إجراءات على بيانات لا تتطابق مع نوع معين. على سبيل المثال ، استخدم .bold () ، اطلب خاصية غير محددة ، أو قم باستدعاء دالة ليست في الحقيقة دالة.
لذا ، إذا حاولت الاتصال بـ girl () ، فسيظهر خطأ Uncaught TypeError: yourVariable.bold ليست وظيفة والفتاة ليست دالة ، لأنه في الواقع يتم استدعاء الكائن ، وليس الوظيفة.
من أجل القضاء على الأخطاء ، تحتاج إلى دراسة المتغيرات. إذن ما هي الفتاة؟ وما هي الفتاة. يمكنك معرفة ما إذا كنت تقوم بتحليل الرمز ، أو عرض المتغيرات باستخدام console.log ، أو أمر مصحح الأخطاء ، أو عن طريق استدعاء اسم المتغير في وحدة التحكم. تحتاج إلى التأكد من أنه من الممكن أن تعمل مع نوع البيانات الموجود في المتغير. إذا لم يكن لائقًا ، فقم بتغييره ، على سبيل المثال ، أضف شرطًا أو جرِّب..الحاق بلوك والتحكم في العملية.
كومة الفائض
إذا كنت تعتقد أن مؤلفي كلمات الأغنية Baby One More Time (هذا هو Britney Spears ، هوه) ، فإن كلمة hit في هذا السياق تعني رغبة المغني في أن يُعاد الاتصال به مرة أخرى (فيما يلي شرح لسياق الأغنية ، مترجم تقريبًا). قد تؤدي هذه الرغبة إلى زيادة عدد المكالمات في الحياة الواقعية. ولكن في البرمجة ، هذا تكرار يمكن أن يسبب خطأ إذا تجاوز مكدس الاستدعاءات.
الأخطاء هي كما يلي:
خطأ: نفاد مساحة المكدس (الحافة)
InternalError: تكرار كبير (Firefox)
RangeError: تم تجاوز الحد الأقصى لحجم مكدس الاتصال (Chrome)
يحدث تجاوز سعة الحزمة في حالة عدم مراعاة المطور للحالة الأساسية في التكرار ، أو في حالة عدم معالجة الكود للحالة المقدمة.
function oneMoreTime(stillBelieve=true, loneliness=0) { if (!stillBelieve && loneliness < 0) return loneliness++ return oneMoreTime(stillBelieve, loneliness) }
في هذه الحالة ، لا يمكن تعيين stillBelieve على خطأ ، لذلك سيتم استدعاء oneTime في كل مرة ، لكن الوظيفة لن تنتهي أبدًا.
إذا بدأت في الأمل في وجود صديقين ، فإن هذا سوف يقلل من الشعور بالوحدة (الوحدة) ، ولا يمكنك انتظار المكالمة.
function oneMoreTime(stillBelieve=true, loneliness=0) { if (!stillBelieve && loneliness < 0) return loneliness-- stillBelieve = false return oneMoreTime(stillBelieve, loneliness) }
على سبيل المثال ، هناك حالات ذات حلقات غير محدودة ، عندما لا يعطي النظام رسالة خطأ ، وتتجمد ببساطة الصفحة التي يتم فيها تنفيذ شفرة JavaScript. يحدث هذا إذا لم تحتوي حلقة الوقت على شرط إنهاء.
let worldEnded = false while (worldEnded !== true) { console.log("Keep on dancin' till the world ends") }
يمكنك حل المشكلة على النحو التالي:
let worldEnded = false while (worldEnded !== true) { console.log("Keep on dancin' till the world ends") worldEnded = true }
تصحيح الحلقات التي لا نهاية لها والعودية
إذا كانت لديك مشكلة في حلقة لا نهائية ، في Chrome أو Edge ، فأنت بحاجة إلى إغلاق علامة التبويب ، وفي Firefox ، أغلق نافذة المتصفح. بعد ذلك ، تحتاج إلى تحليل التعليمات البرمجية بعناية. إذا لم تتمكن من العثور على المشكلة ، فيجب عليك إضافة أمر مصحح الأخطاء إلى الحلقة أو الوظيفة والتحقق من قيمة المتغيرات. إذا لم تكن النتيجة كما هو متوقع ، فاستبدلها ، ويمكن القيام بها بسهولة.
في المثال أعلاه ، يجب إضافة مصحح الأخطاء باعتباره السطر الأول من دالة أو حلقة. فأنت بحاجة إلى فتح علامة التبويب debug في Chrome عن طريق تحليل المتغيرات في النطاق. باستخدام الزر التالي ، يمكنك تتبع التغيير في كل تكرار. القيام بكل هذا أمر بسيط ، وفي معظم الحالات تكون المشكلة.
يمكنك قراءة المزيد حول كل هذا هنا (
لمتصفح Chrome ) وهنا (
لمتصفح فايرفوكس ).
خطأ في بناء الجملة
أحد أكثر أخطاء JavaScript شيوعًا هو SyntaxError. تجنبهم مساعدة محرر النص التمديد. لذلك ، يقوم Bracket Pair Colorizer بتمييز الأقواس الموجودة في الكود بألوان مختلفة ، ويتيح Prettier أو أداة تحليل مماثلة العثور على الأخطاء بسرعة. أفضل خيار لتقليل احتمالية SyntaxError هو الحد الأدنى من التداخل.
شارك في التعليقات: ماذا تفعل من أجل تجنب الأخطاء أو اكتشافها والقضاء عليها بسرعة؟
توصي Skillbox بما يلي: