النقطة "." لها دلالتان في JavaScript
دلالات 1. يمثل العلامة العشرية (رقم الفاصلة العائمة) في الحساب، مثل 2.5
دلالات 2. احصل على سمات الكائن وطرقه، مثل [].push(2)
لا يكاد يكون هناك أي شيء يصعب فهمه، ولكن السؤال التالي مثير للاهتمام.
انسخ رمز الكود كما يلي:
// كيف سيتم تنفيذ هذا السطر من التعليمات البرمجية؟
1.toString();
كما يلي في Firebug
النقطة هنا تعبر عن الدلالات المذكورة أعلاه 1، لذلك يجب أن يتبع النقطة رقم ما يلي هنا هو toString، وصياغة التقرير خاطئة.
الحل بسيط للغاية، مثل إضافة قوسين
انسخ رمز الكود كما يلي:
(1).toString();
لا يزال بإمكانك كتابتها بهذه الطريقة، ولكن من الصعب فهمها
انسخ رمز الكود كما يلي:
1..toString();
السبب وراء إمكانية تشغيله في المتصفحات هو أن كل محرك JS للمتصفح يفهم "1..toString()" على أنه "1.0.toString()". النقطة الأولى هنا هي الدلالية 1، والنقطة الثانية هي الدلالية 2.
هناك طريقة أكثر غرابة لكتابتها، ولكن لم يتم الإبلاغ عن أي خطأ.
انسخ رمز الكود كما يلي:
1.toString(); // لاحظ أن هناك مسافة قبل النقطة
من الواضح أن النقطة هنا هي دلالية 2، أي أن محرك JS سيتجاهل المسافات قبل عامل النقطة، في الواقع، بغض النظر عن المسافات التي تسبقها أو بعدها، سيتم تجاهلها. على النحو التالي
انسخ رمز الكود كما يلي:
1.toString(); // توجد مسافة قبل النقطة وبعدها
1.toString(); // هناك مسافتان قبل النقطة وبعدها.
1.toString(); // توجد علامة تبويب قبل الفترة
1.toString(); // توجد علامة تبويب قبل النقطة وبعدها.
لن يتجاهل محرك JS المسافات فحسب، بل سيتجاهل علامات التبويب أيضًا.