إذا قمت بتحويل نوع معين بشكل صريح إلى نوع آخر من خلال استدعاء دالة أو أسلوب، فإن ذلك يسمى التحويل الصريح، والعكس يسمى تحويل النوع الضمني. الكلمات "تحويل نوع العرض" و"تحويل النوع الضمني" غير موجودة في Google وWikipedia. دعونا نسميها ذلك.
1. تحويلات النوع الضمني في العمليات
1. عامل التشغيل "+".
انسخ رمز الكود كما يلي:
فار أ = 11, ب = '22';
فار ج = أ + ب؛
هنا سيقوم المحرك أولاً بتحويل a إلى السلسلة "11" ثم توصيلها بـ b، والتي تصبح "1122". قد يتساءل بعض الناس، لماذا لا نحول b إلى الرقم 22 ثم نقوم بإجراء عملية جمع حسابية، وفي هذه الحالة سيكون c 33. لا يوجد سبب. عندما يكون أحد طرفي العامل "+" من النوع الرقمي والآخر من نوع السلسلة، يشترط محرك js إجراء تسلسل سلسلة بدلاً من الإضافة الحسابية. باستخدام ميزة عامل التشغيل "+"، يمكن تحويل الرقم بسهولة إلى سلسلة. يحب
انسخ رمز الكود كما يلي:
فار أ = 11؛
تنبيه (نوع أ)؛
أ = أ + '';
تنبيه (نوع أ)؛
2. "-" المشغل
"-" يمكن أن يكون عاملاً أحاديًا (عملية سالبة) أو عاملًا ثنائيًا (عملية طرح). يحب
انسخ رمز الكود كما يلي:
فار أ = 11، ب = '5'؛
فار ج = أ - ب؛
تنبيه (نوع ج)؛
على عكس "+" أعلاه، سيتم تحويل السلسلة b ضمنيًا إلى الرقم 5 ثم سيتم إجراء الطرح الحسابي. باستخدام هذه الميزة، يمكنك بسهولة تحويل السلسلة إلى رقم
انسخ رمز الكود كما يلي:
فار أ = '11';
أ = أ - '';
تنبيه (نوع أ)؛// -->رقم
2. تحويلات النوع الضمني في البيانات
1، إذا
انسخ رمز الكود كما يلي:
فار أوبج = {الاسم:'جاك'}
إذا (الكائن) {
// افعل المزيد
}
هنا سيتم تحويل obj ضمنيًا إلى نوع منطقي
2. بينما
انسخ رمز الكود كما يلي:
فار أوبج = {الاسم:'جاك'}
بينما (الكائن) {
// افعل المزيد
}
نفس كما لو
3. اكتب التحويل أثناء
يحدث التحويل الضمني من المعرف إلى السلسلة عندما يتم تعريف كائن حرفي.
انسخ رمز الكود كما يلي:
var person = {'name':'jack',"age":20,school:'PKU'};
ل(فار شخصيا){
تنبيه(أ + ":" + نوع أ);
}
هنا، تتم إضافة علامات الاقتباس المفردة/المزدوجة إلى الاسم والعمر على التوالي للتأكيد على أنها من نوع السلسلة، ولا تتم إضافة علامات الاقتباس المفردة/المزدوجة إلى المدرسة. نحن نجتاز خصائص الكائن لمعرفة نوعه. لقد وجد أن المدرسة يتم تحويلها ضمنيًا أيضًا إلى نوع السلسلة.
فهرس المصفوفة هو في الواقع نوع سلسلة. إنه لأمر مدهش، ولكن هذا صحيح. يحب
انسخ رمز الكود كما يلي:
فار اري = [1,3,5,7];
ل(فار في آري){
تنبيه(أ + ":" + نوع أ);
}
3. تحويل النوع الضمني عند التنبيه
انسخ رمز الكود كما يلي:
String.prototype.fn = function(){return this};
var a = 'hello';
تنبيه (نوع a.fn())؛ //->object
تنبيه (a.fn())؛ //-->مرحبا
تتم إضافة طريقة fn إلى النموذج الأولي للسلسلة، والتي تُرجع هذا. نحن نعلم أنه يمكن فهم هذا على أنه كائن مثيل للفئة الحالية، نظرًا لأنه كائن، فإن typeof a.fn() يُرجع الكائن بشكل طبيعي.
المفتاح هو التنبيه الأخير (a.fn()). من الواضح أن ما يُرجعه a.fn() هو كائن، ولكن يتم تحويله ضمنيًا إلى سلسلة "hello" للعرض.
ويحدث نفس الشيء مع الأنواع الرقمية، مثل
انسخ رمز الكود كما يلي:
Number.prototype.fn = function(){return this};
فار أ = 10؛
تنبيه (نوع a.fn ())؛ //-->object
تنبيه (a.fn())؛ //-->10
تقوم a.fn() بإرجاع نوع كائن، ولكن يتم تحويله ضمنيًا إلى رقم عند استخدام التنبيه (a.fn()).