"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تعرض `console.log` سبب استثناء قيمة الكائن المعدل

تعرض `console.log` سبب استثناء قيمة الكائن المعدل

نشر في 2025-06-14
تصفح:987

Why Does `console.log` Show Unexpected Object Values After Modification?

دعنا نكشف هذا اللغز عن طريق تحليل مقتطف الرمز هذا: console.log ('foo1' ، foo ، foo.length) ؛ foo.splice (2 ، 1) ؛ console.log ('foo2' ، foo ، foo.length) ؛

في الكروم ، وهذا ينتج الإخراج غير المتوقع:

[كائن ، كائن ، كائن ، كائن ، كائن] 5 0: كائن 1: كائن 2: كائن 3: كائن الطول: 4 __proto__: صفيف [0] 5 (فهرس): 23 FOO2 [كائن ، كائن ، كائن ، كائن] 4 0: كائن 1: كائن 2: كائن 3: كائن الطول: 4 __proto__: Array [0]

foo = [{id: 1},{id: 2},{id: 3},{id: 4}, {id: 5}, ];
console.log('foo1', foo, foo.length);
foo.splice(2, 1);
console.log('foo2', foo, foo.length);
الفحص غير المتزامن

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

foo = [{id: 1},{id: 2},{id: 3},{id: 4}, {id: 5}, ];
console.log('foo1', foo, foo.length);
foo.splice(2, 1);
console.log('foo2', foo, foo.length);
مفاجأة متغيرة على سبيل المثال

عند توسيع كائن بعد تعديله ، ترى القيم المحدثة بدلاً من الحالة الأصلية. يحدث هذا بشكل غير متزامن ، مما يؤدي إلى الإخراج غير المنطقي على ما يبدو. console.log (obj.foo ، obj.bar ، obj.baz) ؛) json charsing (على سبيل المثال ، console.log (json.parse (json.stringify (obj))) ؛)

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3