1. التصنيف
أنواع البيانات الأساسية: غير محددة ، لاغية ، سلسلة ، منطقية ، رقم
نوع البيانات المعقدة: كائن
يتم تعريف سمة الكائن في شكل اسم وزوج غير مرتبة (الاسم: القيمة).
2. التفسير التفصيلي
1. غير محدد : النوع غير المحدد له قيمة واحدة فقط: غير محددة. عندما يتم الإعلان عن متغير باستخدام VAR ولكن لم يتم تهيئته ، تكون قيمة هذا المتغير غير محددة.
تختلف المتغيرات التي تحتوي على قيم غير محددة عن المتغيرات التي لم يتم تعريفها. يمكن أن يوضح المثال التالي:
نسخة الكود كما يلي:
var demo1 ؛ // أعلن ولكن لم يتم تهيئته
تنبيه (DEMO1) ؛ // غير محدد
ALERT (DEMO2) ؛ // الإبلاغ عن خطأ ، لم يتم تعريف DEMO2
2. فارغ : هناك قيمة واحدة فقط لنوع فارغة: فارغة. من وجهة نظر منطقية ، تمثل القيمة الفارغة مؤشر كائن فارغ.
إذا كان المتغير المحدد جاهزًا لإنقاذ الكائن في المستقبل ، فمن الأفضل تهيئة المتغير إلى قيم أخرى بدلاً من القيم الأخرى. وبهذه الطريقة ، فقط من خلال اكتشاف القيمة الفارغة مباشرة ، يمكنك معرفة ما إذا كان المتغير المقابل قد حفظ مرجع الكائن ، على سبيل المثال:
نسخة الكود كما يلي:
إذا (السيارة! = فارغة)
{
// أداء بعض العمليات على كائن السيارة
}
في الواقع ، يتم اشتقاق القيم غير المحددة من القيم الخالية ، لذلك تحدد ECMA-262 أن اختبارات المساواة الخاصة بهم يجب أن تعود صحيحة.
تنبيه (غير محدد == فارغ) ؛ //حقيقي
على الرغم من أن Null وغير المحددة لها مثل هذه العلاقة ، فإن استخداماتها مختلفة تمامًا. في أي حال ، ليس من الضروري تعيين قيمة المتغير بشكل صريح إلى غير محدد ، ولكن نفس القاعدة لا تنطبق على NULL. بمعنى آخر ، طالما أن المتغير الذي يهدف إلى حفظ الكائن لم يحفظ الكائن بعد ، يجب السماح للمتغير بشكل صريح بحفظ القيمة الفارغة. لا يعكس القيام بذلك فقط اتفاقية NULL كمؤشر للكائنات الفارغة ، ولكنه يساعد أيضًا على التمييز بين الفارغ وغير المحدد.
3. منطقية : نوع منطقي له قيمتان: صواب وكاذب. هاتان القيمتان ليستا مثل القيم الرقمية ، لذلك صحيح لا يساوي بالضرورة 1 ، والخطأ لا يساوي بالضرورة 0.
تجدر الإشارة إلى أن القيم الحرفية لنوع منطقية حساسة للحالة ، أي ، ليست صحيحة ولا خاطئة (وأشكال أخرى من خلط الحالات) هي قيم منطقية ، ولكنها مجرد معرفات.
على الرغم من وجود قيمتان حرفيتان فقط لأنواع منطقية ، إلا أن جميع أنواع القيم في JavaScript لها قيم تعادل قيم هاتين القيمتين المنطقيتين. لتحويل قيمة إلى القيمة المنطقية المقابلة لها ، يمكنك استدعاء وظيفة تحويل النوع Boolean () ، على سبيل المثال:
نسخة الكود كما يلي:
رسالة var = 'hello world' ؛
var messageasboolean = boolean (message) ؛
في هذا المثال ، يتم تحويل رسالة السلسلة إلى قيمة منطقية ، يتم تخزينها في متغير MessageasBoolean. يمكن استدعاء وظيفة Boolean () على قيم أي نوع من البيانات وسيتم دائمًا إرجاع قيمة منطقية. أما إذا كانت القيمة التي تم إرجاعها صحيحة أو خاطئة ، فإنها تعتمد على نوع البيانات لتحويل القيمة وقيمتها الفعلية. يوضح الجدول التالي قواعد التحويل لأنواع البيانات المختلفة وكائناتها.
تعتبر قواعد التحويل هذه مهمة للغاية لفهم التنفيذ التلقائي للتحولات المنطقية المقابلة في عبارات التحكم في التدفق (مثل البيانات) ، على سبيل المثال:
نسخة الكود كما يلي:
رسالة var = 'hello world' ؛
إذا (الرسالة) // أي ما يعادل إذا (Boolean (message) == TRUE)
{
التنبيه ("القيمة صحيحة") ؛ // القيمة صحيحة
}
بسبب هذا التحول الآلي المنطقي ، من الأهمية بمكان معرفة بالضبط المتغيرات المستخدمة في بيان التحكم في التدفق.
4. الرقم: عدد صحيح ونقطة عائمة
4.1 عدد صحيح: عند إجراء العمليات الحسابية ، سيتم تحويل جميع الأرقام الثمانية والسداسية إلى عشرية
4.2 نقطة عائمة: أعلى دقة لقيمة النقطة العائمة هي 17 بت ، وبالتالي فإن دقتها أقل بكثير من وجود عدد صحيح عند حساب الحساب. على سبيل المثال: نتيجة 0.1+0.2 ليست 0.3 ، ولكن 0.30000000000000000004. على سبيل المثال:
نسخة الكود كما يلي:
أ = 0.2 ؛
ب = 0.1 ؛
if (a+b == 0.3) {
تنبيه ("مرحبا") ؛
}
آخر{
تنبيه ("مرحبا") ؛
}
ستظهر النتيجة "مرحبًا" ، لذلك لا تختبر قيمة نقطة عائمة محددة.
4.3 NAN: غير رقمي ليس رقمًا ، يتم استخدام هذه القيمة لتمثيل حالة يكون فيها المعامل الذي أراد في الأصل إرجاع قيمة لم يرد قيمة (لن يلقي هذا خطأ).
نان نفسه لديه خصائصان غير عادية. أولاً ، ستعيد أي عملية تنطوي على NAN (مثل NAN/10) NAN ، وهي ميزة قد تسبب مشاكل في حسابات متعددة الخطوات. ثانياً ، نان لا يساوي أي قيمة ، بما في ذلك نان نفسها. على سبيل المثال:
نسخة الكود كما يلي:
تنبيه (nan == nan) ؛ //خطأ شنيع
هناك وظيفة ISNAN () في JavaScript. تقبل هذه الوظيفة المعلمة ، والتي يمكن أن تكون من أي نوع ، وستساعدنا الوظيفة في تحديد ما إذا كانت هذه المعلمة "ليست قيمة رقمية". بعد تلقي قيمة ، يحاول ISNAN () تحويل هذه القيمة إلى قيمة رقمية. يتم تحويل بعض القيم التي لا تكون القيم الرقمية مباشرة إلى قيم رقمية ، مثل السلسلة "10" أو القيم المنطقية. أي قيمة لا يمكن تحويلها إلى قيمة رقمية ستؤدي إلى إرجاع هذه الوظيفة. على سبيل المثال:
نسخة الكود كما يلي:
تنبيه (Isnan (NAN)) ؛ //حقيقي
تنبيه (isnan (10)) ؛ // false (10 هي قيمة رقمية)
تنبيه (Isnan ("10")) ؛ // false (يمكن تحويلها إلى قيمة رقمية 10)
تنبيه (isnan ("الأزرق")) ؛ // صحيح (لا يمكن تحويله إلى قيمة عددية)
تنبيه (Isnan ("Bule123")) ؛ // ture (لا يمكن تحويلها إلى قيمة عددية)
تنبيه (isnan (صحيح)) ؛ // false (يمكن تحويلها إلى قيمة 1)
هناك 3 وظائف يمكنها تحويل القيم غير الرقمية إلى قيم رقمية: الرقم () ، و parseint () و parsefloat (). يمكن استخدام الوظيفة الأولى ، وهي رقم وظيفة التحويل () ، لأي نوع من البيانات ، بينما يتم استخدام وظيفتين أخريين خصيصًا لتحويل السلاسل إلى قيم رقمية. ستعود هذه الوظائف الثلاثة إلى نتائج مختلفة لنفس الإدخال.
قواعد تحويل وظيفة الرقم () هي كما يلي:
● إذا كانت قيمة منطقية ، فسيتم استبدال صواب وكاذب بـ 1 و 0 على التوالي.
● إذا كانت قيمة رقمية ، فهي مجرد تمريرة وعودة بسيطة.
● إذا كانت قيمة فارغة ، فاحصل على 0
● إذا لم يتم تعريفه ، فأعد نان
● إذا كانت سلسلة ، اتبع القواعد التالية:
○ إذا كانت السلسلة تحتوي على أرقام فقط ، قم بتحويلها إلى قيمة عشرية ، أي ، "1" ستصبح 1 ، "123" ستصبح 123 ، وسيصبح "011" 11 (يتم تجاهل 0 ".
○ إذا كانت السلسلة تحتوي على تنسيق نماذج عائم صالح ، مثل "1.1" ، يتم تحويله إلى رقم النقطة العائمة المقابلة (سيتم تجاهل Leading 0)
○ إذا كانت السلسلة تحتوي على تنسيق سداسي عشري صالح ، مثل "0xf" ، يتم تحويله إلى قيمة عدد صحيح عشري من نفس الحجم
○ إذا كانت السلسلة فارغة ، قم بتحويلها إلى 0
○ إذا كانت السلسلة تحتوي على أحرف أخرى غير التنسيق أعلاه ، فقم بتحويلها إلى NAN
● إذا كان كائنًا ، اتصل بأسلوب ValueOF () للكائن ، ثم قم بتحويل القيمة التي تم إرجاعها وفقًا للقواعد السابقة. إذا كانت نتيجة التحويل نان ، يتم استدعاء طريقة tostring () للكائن ، ثم يتم تحويل قيمة السلسلة التي تم إرجاعها بدورها وفقًا للقواعد السابقة.
نسخة الكود كما يلي:
var num1 = number ("Hello World") ؛ // نان
var num2 = number ("") ؛ // 0
var num3 = number ("000011") ؛ // 11
var num4 = number (true) ؛ // 1
نظرًا لأن وظيفة الرقم () تكون أكثر تعقيدًا وعدمًا عند تحويل السلاسل ، يتم استخدام وظيفة Parseint () أكثر شيوعًا عند معالجة الأعداد الصحيحة ، وغالبًا ما يتم استخدام وظيفة parsefloat () عند معالجة أرقام النقاط العائمة. للحصول على تفاصيل ، يرجى الرجوع إلى: http://www.cnblogs.com/yxfield/p/4167954.html
5. سلسلة
يتم استخدام نوع السلسلة لتمثيل سلسلة من الأحرف المكونة من أحرف Unicode صفر أو أكثر ، أي سلسلة. يمكن تمثيل السلسلة بواسطة عروض أسعار واحدة (') أو عروض أسعار مزدوجة (").
نسخة الكود كما يلي:
var str1 = "hello" ؛
var str2 = 'hello' ؛
يمكن الحصول على طول أي سلسلة عن طريق الوصول إلى خاصية الطول.
نسخة الكود كما يلي:
تنبيه (str1.length) ؛ // الإخراج 5
هناك طريقتان لتحويل قيمة إلى سلسلة. الأول هو استخدام طريقة ToString () التي يتمتع بها كل قيمة تقريبًا.
نسخة الكود كما يلي:
var age = 11 ؛
var ageasString = Age.ToString () ؛ // سلسلة "11"
وجدت var = صحيح ؛
var foundAssTring = found.toString () ؛ // String "True"
القيم الرقمية ، المنطقية ، الكائنات والسلسلة جميعها لها طرق tostring (). لكن القيم الخالية وغير المحددة ليس لها هذه الطريقة.
في معظم الحالات ، لا يتعين على استدعاء طريقة ToString () تمرير المعلمات. ومع ذلك ، عند استدعاء طريقة TOSTRING () للقيمة الرقمية ، يمكنك تمرير معلمة: Cardinality لقيمة الإخراج.
نسخة الكود كما يلي:
var num = 10 ؛
تنبيه (num.toString ()) ؛ // "10"
تنبيه (num.ToString (2)) ؛ // "1010"
تنبيه (num.ToString (8)) ؛ // "12"
تنبيه (num.ToString (10)) ؛ // "10"
تنبيه (num.ToString (16)) ؛ // "أ"
من هذا المثال ، يمكننا أن نرى أنه من خلال تحديد Cardinality ، ستغير طريقة ToString () قيمة الإخراج. يمكن تحويل القيمة 10 إلى تنسيقات رقمية مختلفة عند الإخراج وفقًا للكسر المختلفة.
دون معرفة ما إذا كانت القيمة المراد تحويلها هي فارغة أو غير محددة ، يمكنك أيضًا استخدام سلسلة وظيفة التحويل () ، والتي يمكنها تحويل أي نوع من القيمة إلى سلسلة. تتبع وظيفة String () قواعد التحويل التالية:
● إذا كانت القيمة تحتوي على طريقة ToString () ، فسيتم تسمى الطريقة (لا توجد معلمات) ويتم إرجاع النتيجة المقابلة.
● إذا كانت القيمة لاغية ، فاحصل على "فارغ"
● إذا كانت القيمة غير محددة ، فاحصل على "غير محدد"
6. كائن
الكائنات هي في الواقع مجموعة من البيانات والوظائف. يمكن إنشاء الكائنات عن طريق تنفيذ المشغل الجديد متبوعًا باسم نوع الكائن المراد إنشاؤه. من خلال إنشاء مثيل لكائن النوع وإضافة خصائص وطرق (أو) ، يمكنك إنشاء كائن مخصص.
var o = new Object () ؛
أي خصائص وطرق نوع الكائن موجودة أيضًا في كائنات أكثر تحديدًا. كل مثيل من الكائن له الخصائص والأساليب التالية:
● مُنشئ (مُنشئ) - يحفظ الوظيفة المستخدمة لإنشاء الكائن الحالي
● HasownProperty (PropertyName) - يستخدم للتحقق مما إذا كانت الخاصية المحددة موجودة في مثيل الكائن الحالي (وليس في النموذج الأولي للمثال). حيث ، يجب تحديد اسم الخاصية (PropertyName) كمعلمة في نموذج السلسلة (على سبيل المثال: O.HasownProperty ("name")))
● isprototypeof (كائن) - يستخدم للتحقق مما إذا كان الكائن الوارد هو نموذج أولي لكائن آخر
● PropertyIsenumerable (PropertyName) - يستخدم للتحقق مما إذا كان يمكن تعداد خاصية معينة باستخدام عبارة إلى بيان.
● ToString () - إرجاع تمثيل السلسلة للكائن
● valueof () - إرجاع سلسلة الكائن ، تمثيل رقمي أو منطقي. عادةً ما تكون قيمة إرجاع طريقة ToString () هي نفسها.
3. اختبار صغير
نسخة الكود كما يلي:
Typeof (NAN)
نوع (اللانهاية)
Typeof (NULL)
نوع (غير محدد)
سوف تطرح العديد من المقابلات الأسئلة أعلاه ~~
ما سبق هو مقدمة لأنواع بيانات جافا سكريبت 6. هل فهمت ذلك بوضوح؟ آمل أن تتمكن من التحسن بعد قراءة هذا المقال.