مقدمة
إذا كانت البيانات يجب أن تكون بيانات يستخدمها المبرمجون في كثير من الأحيان ، وغالبًا ما يحتاجون إلى إصدار أحكام. إذا استخدمت البيانات عمومًا علامات مزدوجة لتحديد ما إذا كان العنصرين قبل وبعد متسقين. إذا كانت متسقة ، فإن الإرجاع صحيح ثم قم بتنفيذ البيان التالي. خلاف ذلك ، تنفيذ بيانات أخرى. يشير تحويل النوع الضمني المذكور في هذه المقالة إلى التحويل الناجم عن ==. لإعطاء مثال بسيط ، فإن علامة متساوية مزدوجة ليست علامة متساوية ، علامة متساوية إجمالية هي "===" ثلاث علامات متساوية ، والبيان "1" == 1 ، ثم بشكل عام ، يتم تحويل السلسلة السابقة "1" إلى رقم 1 ثم مقارنة. من خلال هذا المثال ، يجب أن تفهم ما هو تحويل النوع الضمني!
خطوات تحويل النوع الضمني
1. أولاً ، تحقق مما إذا كان هناك نان قبل وبعد علامة على قدم المساواة. إذا كان نان موجود ، كل مرة تعود خاطئة.
2. دعونا نلقي نظرة على ما إذا كان هناك منطقون قبل وبعد العلامة المزدوجة على قدم المساواة. إذا كان هناك منطقية ، قم بتحويل المنطق إلى رقم. (خطأ هو 0 ، صحيح هو 1)
3. ثم تحقق مما إذا كانت هناك سلاسل قبل وبعد علامة على قدم المساواة. هناك ثلاث حالات:
1. الطرف الآخر هو كائن ، ويتم تحويل الكائن باستخدام tostring () أو valueof () ؛
2. الطرف الآخر هو رقم ، ويتم تحويل السلسلة إلى رقم ؛ (تم تقديم مثال من قبل)
3. الطرف الآخر هو سلسلة ، قارن مباشرة ؛
4. آخر مرة أخرى كاذبة
4. إذا كان رقمًا ، فإن الطرف الآخر هو كائن. يأخذ الكائن valueof () أو toString () للمقارنة ، وسيعود جميع الكائنات الأخرى خطأ.
5. NULL ، غير محدد لن يؤدي تحويل النوع ، لكنها متساوية
يجب وضع أمر التحويل أعلاه في الاعتبار. غالبًا ما تحدث أنواع الأسئلة أثناء المقابلات.
التحويل العددي للطريقة .ToString () وطريقة .valueof ()
عادةً ما نعتقد أن تحويل كائن إلى سلسلة يتطلب استدعاء طريقة toString () ، وتحويله إلى رقم يتطلب استدعاء طريقة ValueOF () ، ولكنه ليس بهذه البساطة عند تطبيقه بالفعل. انظر مثال الرمز التالي:
var obj = {webname: "Haorooms Front-end Blog" ، url: "www.vevb.com"} console.log (obj.toString ()) ؛ // [كائن كائن]وبالمثل ، دعونا نلقي نظرة على طريقة valueof () مرة أخرى:
var arr = [1 ، 2 ، 3] ؛ console.log (arr.valueof ()) ؛ // [1 ، 2 ، 3]
كما يتضح من الكود أعلاه ، فإن طريقة ValueOF () لا تقوم بتحويل الكائن إلى رقم يعكس الكائن. بدلاً من ذلك ، نستخدم tostring ()
var arr = [1 ، 2 ، 3] ؛ console.log (arr.toString ()) ؛ // 1،2،3
ملاحظة: يعتقد العديد من الأصدقاء أنه عند التحويل إلى سلسلة ، يجب عليك أولاً استدعاء طريقة ToString (). في الواقع ، هذا فهم خاطئ. يجب أن نفهم بهذه الطريقة. يمكن تحويل استدعاء طريقة ToString () إلى سلسلة ، ولكن هذا لا يعني بالضرورة أن تحويل السلسلة هو استدعاء طريقة ToString () أولاً.
دعونا نلقي نظرة على الكود التالي:
var arr = {} ؛ arr.valueof = function () {return 1 ؛ } arr.toString = function () {return 2 ؛ } console.log (arr == 1) ؛ // truevar arr = {} ؛ arr.valueof = function () {return [] ؛ } arr.toString = function () {return 1 ؛ } console.log (arr == 1) ؛ // trueيمكننا أن نرى من الكود أعلاه أن أول مكالمة إلى valueof () للتحويل. إذا لم تكن ValueOF () قيمة رقمية ، فسيتم استدعاء ToString للتحويل!
var arr = {} ؛ arr.valueof = function () {return "1" ؛ } arr.toString = function () {return "2" ؛ } console.log (arr == "1") ؛ // trueإذا كانت "1" عبارة عن سلسلة ، فإن أول شيء يطلق عليه valueof ().
var arr = [2] ؛ console.log (arr + "1") ؛ // 21
في المثال أعلاه ، تسمى tostring () ؛ لأن arr.tostring () يتبع 2.
عملية التحويل مثل هذا. أولاً ، ستستدعي ARR طريقة ValueOF () أولاً ، ولكن هذه الطريقة من الرقم هي ببساطة وراثي ولا يتم إعادة كتابتها (بالطبع ، لا يتم تنفيذ إعادة الكتابة هذه من قبلنا). قيمة الإرجاع هي كائن الصفيف نفسه ، وليس نوعًا من القيمة ، لذلك نسمي طريقة ToString () ، وبالتالي تحقيق الغرض من التحويل إلى سلسلة.
ملخص
معظم الكائنات تحويل ضمنيًا إلى أنواع القيمة هي المحاولة الأولى لاستدعاء طريقة ValueOF (). ومع ذلك ، فإن كائن التاريخ هو استثناء. تم إعادة كتابة أساليب القيمة () و tostring () لهذا الكائن بعناية. الافتراضي هو استدعاء طريقة ToString () ، مثل استخدام عامل التشغيل +. إذا كانت في بيئات التشغيل الحسابية الأخرى ، فسيتم استدعاء طريقة ValueOF () بدلاً من ذلك.
var date = new Date () ؛ console.log (Date + "1") ؛ .