استخدام غير لائق جافا سكريبت
هذا الفصل سوف نناقش استخدام أخطاء جافا سكريبت.
تطبيق خطأ عامل التعيين
في برنامج جافا سكريبت إذا كنت تستخدم عبارة شرطية إذا كان عامل التعيين هو علامة المساواة (=) سوف تولد نتيجة خطأ، والنهج الصحيح هو استخدام المقارنة بين اثنين من علامات المساواة (==).
إذا عبارة شرطية ترجع كاذبة (نتوقع) لس لا تساوي 10:
في حالة عودة عبارة شرطية الحقيقي (وليس أن توقعنا) يتم تنفيذ بيان لشروط التعيين س 10،10 صحيحا:
إذا عبارة شرطية ترجع كاذبة (وليس ما كنا نتوقعه) يتم تنفيذ بيان لشروط التعيين س 0،0 خاطئة:
إرجاع قيمة تعيين متغير. |
أخطاء شائعة مقارنة
في المقارنة التقليدية، يتم تجاهل نوع البيانات، وإذا كان بيان حالة التالي بإرجاع صحيحا:
في عملية مقارنة دقيقة، وهو حساب الهوية === المشغل، في حين بلغت قيمة التعبير عن نوع التحقق، الشروط التالية اذا بيان ترجع كاذبة:
غالبا ما يحدث هذا الخطأ في بيان التبديل، والتبديل قورنت بيان حسابها باستخدام مشغل الهوية (===):
والأمثلة التالية تنفيذ في حالة تأهب البوب:
الأمثلة التالية تتعارض لأن نوع لا يتم تنفيذ بالنوافذ تنبيه:
إضافة واعتبارات اتصال
إضافة رقمين معا.
سلسلة الاتصال لربط اثنين.
ترتبط الجمع وجافا سكريبت باستخدام مشغل +.
وبعد ذلك، يمكننا أن نرى رقمين معا، وعلى اتصال إلى سلسلة من الأرقام والتمييز على سبيل المثال:
استخدام المتغيرات مضيفا نتائج غير متسقة:
فار ص = 5؛
فار ض = س + ص. النتائج // ض 15
فار س = 10؛
فار ذ = "5".
فار ض = س + ص. النتائج // z غير "105"
محاولة »
لاحظ استخدام الفاصلة العائمة البيانات
وتقوم جافا سكريبت جميع البيانات على 64 بت نوع البيانات النقطة العائمة (تعويم) لتخزين.
جميع لغات البرمجة، بما في ذلك تفعيل جافا سكريبت لالعائمة دقة نقطة من البيانات يصعب تحديد ما يلي:
يمكنني حل هذه المشكلة، يمكنك استخدام الضرب صحيح والانقسام إلى حل:
فروع سلسلة جافا سكريبت
نحن نستخدم فواصل الأسطر لتشغيل عبارات جافا سكريبت في السلسلة:
ومع ذلك، في سلسلة يولى إرجاع مباشرة ل:
يمكننا اختيار أداة للتنمية أو اضغط على المفتاح F12 لرؤية رسالة خطأ:
تحتاج فواصل سلسلة لاستخدام مائل (\) على النحو التالي:
منقوطة خاطئة
في المثال التالي، لأن الخطأ منقوطة، وإذا كانت كتلة بيان من التعليمات البرمجية لن يتم تنفيذ:
العودة الاحتياطات بيان
جافا سكريبت هو الافتراضي تلقائيا تنتهي في السطر الأخير من التعليمات البرمجية.
المثالان بإرجاع نفس النتيجة (أ ليس فاصلة منقوطة):
ويمكن أيضا أن تستخدم جافا سكريبت لانهاء بيان متعدد الخطوط.
الأمثلة التالية بإرجاع نفس النتيجة:
ومع ذلك، يتم إرجاع الأمثلة التالية من النتائجغير معروف:
لماذا لا يوجد مثل هذه النتيجة؟ لأنه في جافا سكريبت، أمثلة ثابت 4 رمز والتعليمات البرمجية التالية:
function myFunction(a) { var power = 10; return; // 分号结束,返回 undefined a * power; }
حل
إذا كان هو بيان غير مكتمل، على النحو التالي:
var
سوف جافا سكريبت محاولة لقراءة البيان السطر الثاني:
power = 10;
ومع ذلك، لأن هذا البيان هو الكامل:
return
سوف جافا سكريبت تتحول تلقائيا البيان:
return;
في جافا سكريبت، الفاصلة المنقوطة اختيارية.
منذ عودته الجملة كاملة، فإنه سيتم إيقاف بيان جافا سكريبت العودة.
ملاحظة: لا كسر خط عبارة الإرجاع. |
استخدام أسماء مؤشر مجموعة
العديد من لغات البرمجة تسمح باستخدام الاسم كما فهرس الصفيف.
لاستخدام الاسم كما يسمى مؤشر مجموعة مجموعة النقابي (أو التجزئة).
جافا سكريبت لا يدعم استخدام اسم صفائف مؤشر، سوى مؤشر رقمي.
أمثلة
شخص [0] = "جون" .
شخص [1] = "دو" .
شخص [2] = 46؛
فار س = person.length. // Person.length يعود 3
فار ذ = شخص [0]؛ // شخص [0] إلى "جون"
محاولة »
في جافا سكريبت، استخدم اسم الكائن كمؤشر.
إذا كنت تستخدم اسم كمؤشر عند الوصول إلى مجموعة، وجافا سكريبت إعادة تعريف مجموعة قياسية من الكائنات.
بعد تنفيذ هذه العملية، وأساليب وخصائص مجموعة لن يتم استخدامها، وإلا فإنه سوف يولد خطأ:
أمثلة
شخص [ "الاسم الأول"] = " جون".
شخص [ "اسم العائلة"] = " دو".
شخص [ "عمر"] = 46 ؛
فار س = person.length؛ // person.length عوائد 0
فار ذ = شخص [0]؛ // شخص [0] إلى غير معروف
محاولة »
تحديد عنصر صفيف، وأخيرا لا يمكن أن تضيف فاصلة
يتم تعريف الأخطاء:
points = [40, 100, 1, 5, 25, 10,];
التعريف الصحيح من الطريق:
points = [40, 100, 1, 5, 25, 10];
تحديد كائن، وأخيرا لا يمكن أن تضيف فاصلة
يتم تعريف الأخطاء:
websites = {site:"本教程", url:"www.w3big.com", like:460,}
التعريف الصحيح من الطريق:
websites = {site:"本教程", url:"www.w3big.com", like:460}
غير معرف لا لاغية
في جافا سكريبت، لاغية للكائنات، غير معروف للمتغيرات، والخصائص والأساليب.
يتم تعريف الأشياء ممكنة فقط لاغية، وغير معروف على خلاف ذلك.
إذا كنا نريد لاختبار ما إذا كان وجود الكائن، وعندما لم يتم تعريف الكائن بعد سوف رمي خطأ.
استخدام خاطئ:
if (myObj !== null && typeof myObj !== "undefined")
الطريق الصحيح هو أننا بحاجة إلى استخدام تشير typeof للكشف عن ما إذا كان قد تم تعريف الجسم:
if (typeof myObj !== "undefined" && myObj !== null)
نطاق كتلة
جافا سكريبت لا إنشاء نطاق جديد في كل كتلة رمز، والنطاق العام من كل كتلة كودي هي العالمي.
المتغير كود ط التالي بإرجاع 10 بدلا من غير معروف: