أحدث البرامج التعليمية وتطوير الشبكة
×

JS البرنامج التعليمي

JS الصفحة الرئيسية JS المقدمة JS ألى أين JS الناتج JS بناء الجملة JS البيانات JS تعليقات JS المتغيرات JS مشغلي JS علم الحساب JS مهمة JS أنواع البيانات JS وظائف JS الأجسام JS نطاق JS أحداث JS سلاسل JS طرق سلسلة JS أرقام JS طرق عدد JS الرياضيات JS التمور JS تاريخ تنسيقات JS تاريخ طرق JS المصفوفات JS طرق مجموعة JS القيم المنطقية JS مقارنات JS الظروف JS تحول JS حلقة غيرمنتهية For JS حلقة بينما JS استراحة JS نوع التحويل JS التعبير العادي JS أخطاء JS التصحيح JS الرفع JS الوضع الصارم JS دليل الاناقة JS أفضل الممارسات JS الأخطاء JS أداء JS الكلمات المحجوزة JS JSON

JS أشكال

أشكال التحقق من صحة API أشكال

JS موضوع

تعريفات الكائن خصائص الكائن طرق كائن نماذج الكائن

JS وظائف

تعاريف وظيفة وظيفة المعلمات وظيفة الاحتجاج الإغلاق وظيفة

JS HTML DOM

DOM مقدمة DOM أساليب DOM وثيقة DOM عناصر DOM HTML DOM CSS DOM الرسوم المتحركة DOM أحداث DOM EventListener DOM ملاحة DOM العقد DOM Nodelist

JS المتصفح BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS أمثلة

JS أمثلة JS HTML DOM JS HTML إدخال JS HTML الأجسام JS HTML أحداث JS المتصفح JS اختبار قصير JS ملخص

JS المراجع

JavaScript الأجسام HTML DOM الأجسام


 

JavaScript الأخطاء الشائعة


ويشير هذا الفصل بعض الأخطاء جافا سكريبت المشتركة.


عن طريق عن طريق الخطأ في عامل التعيين

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

هذا if بيان بإرجاع false (كما هو متوقع) لس لا تساوي 10:

var x = 0;
if (x == 10)
انها محاولة لنفسك »

هذا if بإرجاع بيان true (وربما ليس من المتوقع ع)، لأن 10 غير صحيح:

var x = 0;
if (x = 10)
انها محاولة لنفسك »

هذا if بيان بإرجاع false (ربما ليس من المتوقع ع)، لأن 0 غير صحيح:

مهمة دوما بإرجاع قيمة الاحالة.


تتوقع مقارنة منزوع

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

var x = 10;
var y = "10";
if (x == y)
انها محاولة لنفسك »

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

var x = 10;
var y = "10";
if (x === y)
انها محاولة لنفسك »

ومن الخطأ الشائع أن ننسى أن البيانات التبديل استخدام المقارنة صارمة:

وهذا التبديل حالة عرض تنبيه:

var x = 10;
switch(x) {
    case 10: alert("Hello");
}
انها محاولة لنفسك »

وهذا التبديل حالة عدم عرض تنبيه:

var x = 10;
switch(x) {
    case "10": alert("Hello");
}
انها محاولة لنفسك »

مربكة إضافة وتسلسل

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

سلسلة هي حول إضافة السلاسل.

في جافا سكريبت تستخدم كلتا العمليتين نفس المشغل +.

وبسبب هذا، إضافة الرقم كرقم سوف تنتج نتيجة مختلفة عن إضافة عدد كسلسلة:

var x = 10 + 5;          // the result in x is 15
var x = 10 + "5";        // the result in x is "105"
انها محاولة لنفسك »

عند إضافة اثنين من المتغيرات، فإنه يمكن أن يكون من الصعب توقع النتيجة:

var x = 10;
var y = 5;
var z = x + y;           // the result in z is 15

var x = 10;
var y = "5";
var z = x + y;           // the result in z is "105"
انها محاولة لنفسك »

سوء الفهم العربات

يتم تخزين كافة الأرقام في جافا سكريبت إلى 64 بت العائمة أرقام نقطة (العربات).

جميع لغات البرمجة، بما في ذلك تفعيل جافا، تواجه صعوبات مع دقة القيم النقطة العائمة:

var x = 0.1;
var y = 0.2;
var z = x + y            // the result in z will not be 0.3
if (z == 0.3)            // this if test will fail
انها محاولة لنفسك »

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

مثال

var z = (x * 10 + y * 10) / 10;       // z will be 0.3
انها محاولة لنفسك »

كسر سلسلة جافا سكريبت

سوف جافا سكريبت يسمح لك لكسر بيان إلى سطرين:

مثال 1

var x =
"Hello World!";
انها محاولة لنفسك »

ولكن، وكسر بيان في وسط سلسلة لن تعمل:

مثال 2

var x = "Hello
World!";
انها محاولة لنفسك »

يجب عليك استخدام "مائل" إذا كان يجب كسر بيان في سلسلة:

مثال 3

var x = "Hello \
World!";
انها محاولة لنفسك »

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

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

if (x == 19);
{
    // code block 
}
انها محاولة لنفسك »

كسر بيان العودة

ومن جافا سكريبت السلوك الافتراضي لإغلاق بيان تلقائيا في نهاية السطر.

وبسبب هذا، فإن هذين المثالين يعود إلى نفس النتيجة:

مثال 1

function myFunction(a) {
    var power = 10 
    return a * power
}
انها محاولة لنفسك »

مثال 2

function myFunction(a) {
    var power = 10;
    return a * power;
}
انها محاولة لنفسك »

سوف جافا سكريبت تسمح لك أيضا لكسر بيان إلى سطرين.

وبسبب هذا، ومثال 3 أيضا إرجاع نفس النتيجة:

مثال 3

function myFunction(a) {
    var
    power = 10; 
    return a * power;
}
انها محاولة لنفسك »

ولكن، ماذا سيحدث إذا كسر بيان عودة في سطرين من هذا القبيل:

مثال 4

function myFunction(a) {
    var
    power = 10; 
    return
    a * power;
}
انها محاولة لنفسك »

سوف الدالة بإرجاع غير معروف!

لماذا؟ نظرا لأن جافا سكريبت يعتقد يعني لك:

مثال 5

function myFunction(a) {
    var
    power = 10; 
    return;
    a * power;
}
انها محاولة لنفسك »

شرح

إذا كان البيان هو مثل غير مكتملة:

var

سيحاول جافا سكريبت لاستكمال بيان عن طريق قراءة السطر التالي:

power = 10;

ولكن لأن هذا البيان هو الكامل:

return

سوف جافا سكريبت إغلاق تلقائيا مثل هذا:

return;

يحدث هذا بسبب إغلاق (إنهاء) البيانات مع منقوطة هو اختياري في جافا سكريبت.

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

أبدا كسر بيان العودة.


الوصول إلى صفائف مع مؤشرات الاسم

العديد من لغات البرمجة تدعم المصفوفات مع الفهارس اسمه.

وتسمى المصفوفات مع الفهارس اسمه المصفوفات الترابطية (أو التجزئة).

جافا سكريبت لا يدعم المصفوفات مع الفهارس اسمه.

في جافا سكريبت، صفائف استخدام مؤشرات مرقمة:

مثال

var person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
var x = person.length;         // person.length will return 3
var y = person[0];             // person[0] will return "John"
انها محاولة لنفسك »

في جافا سكريبت، واستخدام الكائنات المسماة الفهارس.

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

بعد إعادة تعريف التلقائي، وأساليب مجموعة وخصائص تسفر عن نتائج غير محددة أو غير صحيحة:

مثال:

var person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
var x = person.length;         // person.length will return 0
var y = person[0];             // person[0] will return undefined
انها محاولة لنفسك »

انهاء تعريف صفيف مع الفاصلة

غير صحيح:

points = [40, 100, 1, 5, 25, 10,];

سوف تفشل بعض محركات JSON وجافا سكريبت، أو تتصرف بشكل غير متوقع.

صحيح:

points = [40, 100, 1, 5, 25, 10];

انهاء تعريف كائن مع الفاصلة

غير صحيح:

person = {firstName:"John", lastName:"Doe", age:46,}

سوف تفشل بعض محركات JSON وجافا سكريبت، أو تتصرف بشكل غير متوقع.

صحيح:

person = {firstName:"John", lastName:"Doe", age:46}

غير معرف غير NULL

مع جافا سكريبت، لاغية والكائنات، غير معروف هو للمتغيرات، والخصائص والأساليب.

لاغيا، كائن أن تكون محددة، وإلا سيتم غير معرفة ذلك.

إذا كنت ترغب في اختبار ما إذا كان يوجد كائن، وهذا سوف رمي خطأ إذا كان الكائن غير معرف:

غير صحيح:

if (myObj !== null && typeof myObj !== "undefined") 

وبسبب هذا، يجب اختبار تشير typeof () أولا:

صحيح:

if (typeof myObj !== "undefined" && myObj !== null) 

تتوقع نطاق كتلة مستوى

جافا سكريبت لا إنشاء نطاق جديد لكل كتلة التعليمات البرمجية.

صحيح في كثير من لغات البرمجة، ولكن ليس صحيحا في جافا سكريبت.

وهو خطأ شائع، بين المطورين جافا سكريبت الجديد، إلى الاعتقاد بأن هذا رمز إرجاع غير معروف:

مثال

for (var i = 0; i < 10; i++) {
    // some code
}
return i;
انها محاولة لنفسك »