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

قيم جافا سكريبت مقابل المرجع

تم النشر بتاريخ 2024-07-31
تصفح:936

JavaScript values vs reference

فهم كيفية الاحتفاظ بالمتغيرات في JavaScript: كقيم أو مراجع

في جافا سكريبت، أو بالأحرى البرمجة، المتغير هو موقع في ذاكرة الكمبيوتر المستخدم لتخزين البيانات. يتم الإعلان عن المتغيرات (تعطى اسمًا ومعرفًا) ويمكن تعيين قيمة لها على الفور أو لاحقًا، اعتمادًا على اللغة. ويمكن بعد ذلك الإشارة إلى هذا المتغير لاحقًا في البرنامج بدلاً من ذكر نفس القيمة بشكل صريح مرة أخرى.

في جافا سكريبت، يتم تمرير البيانات في شكل قيم، يمكن أن تكون هذه القيم إما قيمًا أولية أو قيمًا كائنية. كمطور جافا سكريبت، فإن فهم كيفية تعامل جافا سكريبت مع البيانات أمر بالغ الأهمية للحصول على أساسيات قوية في اللغة.

القيم الأولية تشمل:

  • سلاسل.
  • أعداد.
  • القيم المنطقية.
  • BigInt.
  • رمز.
  • غير معرف.

قيم الكائنات من ناحية أخرى هي:

  • المصفوفات.
  • المهام.
  • أشياء.

تتصرف أنواع القيم هذه بشكل مختلف عند تمريرها، خذ بعين الاعتبار المقتطف أدناه:

var myName = "فريد";
فار OtherName = myName;
اسمي = "اشلي";
console.log(myName); // اشلي
console.log(otherName); //فريد

لاحظ أن الاسم الآخر ظل كما هو على الرغم من أنه يبدو وكأنه "نسخة" من myName. في الواقع، ما حدث بالفعل هو أنه عندما تم تعيين اسم آخر لـ myName، لم يتم تعيينه كنسخة من السلسلة "Fred"، بل تم إنشاء سلسلة جديدة "Fred". وبالتالي، لا يوجد رابط مباشر بين myName وotherName. هذه هي الطريقة التي تقوم بها JavaScript بتمرير القيم البدائية.

يتم التعامل مع قيم الكائنات بشكل مختلف، قم بإلقاء نظرة على المقتطف أدناه:

var myObj = {color: "red"};
فار أخرىObj = myObj;
myObj.color = "أزرق";
console.log(myObj.color); //أزرق
console.log(otherObj.color); //أزرق

هنا، تم إنشاء الكائن وتعيينه إلى myObj، والذي تم تعيينه بعد ذلك إلىotherObj، انظر كيف تم تغيير خصائص الألوانotherObj وmyObj فقط عن طريق تغيير خاصية اللون لـ myObj. وذلك لأنه يتم تمرير قيم الكائنات كمراجع. لا يشير myObj مباشرة إلى الكائن، بل يشير إلى مرجعه بدلاً من ذلك، ثم يتم تعيين myObj إلى كائن آخر وهو مرجع إلى الكائن الحقيقي. ومن ثم فإن كلا المتغيرين مرتبطان بنفس الكائن لأنهما يشيران إلى نفس المرجع، والتغيير في أحدهما يؤثر على الآخر.

هذا هو السبب في أن المقارنة (===) بين كائنين تُرجع خطأً مباشرةً، فأنت تقارن حرفيًا بين مرجعين مختلفين. هنا، myObj ===otherObj يُرجع صحيحًا لأننا نقارن نفس المراجع.

آمل أن يمنحك هذا منظورًا جديدًا لكيفية عمل JavaScript خلف الكواليس.

حتى ذلك الحين، ابق خاليًا من الأخطاء.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/js_cipher/javascript-values-vs-reference-1ao5?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3