دعنا نكشف هذا اللغز عن طريق تحليل مقتطف الرمز هذا: 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