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

اختر ما تسمح به
+92 312 8299940عرض سعر مجاني
أداة مجانية بلا تثبيت

مدقق JavaScript
يحدد السطر، لا الخطأ فقط

يقرأ مدقق JavaScript هذا السكربت كما يقرأه المحرك، ثم يبلّغ عن أول ما يوقفه. كما تحمل كل ملاحظة سطرًا وعمودًا والرمز المسؤول، لذلك تذهب إلى الموضع مباشرة. ولا شيء تلصقه يخرج من المتصفح ولا شيء يُنفَّذ.

  • مجانيالسعر
  • ES2024يقرأ
  • أبدًايشغّل الكود
  • لا شيءالرفع

JavaScript Validator

Read a script and name the first syntax error, with the line and the column

لم يُقرأ شيء بعد.

Ready. Paste a script, or press the sample button.

يؤدي متصفحك كل العمل هنا، في علامة التبويب هذه. لا نرفع شيئًا، ولا نخزّن شيئًا، ولا نسجل شيئًا.
الخلاصة القصيرة

ما الذي يتحقق منه مدقق JavaScript

المحرك يقرأ السكربت كله قبل أن ينفّذ سطرًا واحدًا منه. لذلك يوقف قوس مكسور في أي موضع الملف كله، ويبقى اللسان أبيض.

ولهذا العطل وُجد مدقق JavaScript هذا. فهو يمرّ على السكربت كنص، ثم يبلّغ عن أول موضع تنكسر فيه القواعد، مع السطر والعمود.

كما يتحقق من شكل ما قرأه. قوس معقوف بلا شريك، ونصّ لا يُغلق أبدًا، وكلمة مفتاحية مستخدمة كاسم، وفاصلة شاردة في قائمة وسائط استدعاء.

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

ولا شيء يخرج من هذا اللسان. لذلك يُقرأ سكربت عميل تحت اتفاقية سرّية كما يُقرأ سكربت عام تمامًا.

كيف يقرأ مدقق JavaScript سكربتًا

المرور الأول يحوّل النص إلى رموز. فالرقم والنصّ والقالب والتعبير النمطي والاسم والمعامل والكلمة المفتاحية أشياء مختلفة، والقارئ يقرّر حرفًا بحرف ما ينظر إليه.

رسم لسطر واحد من JavaScript مقسّم إلى صف من بطاقات رموز ملوّنة، كلمة مفتاحية واسم وعلامة يساوي ونصّ وفاصلة منقوطة، ثم تعبير نمطي مكتوب بين شرطتين مائلتين مع ملاحظة بجانبه تشرح أن الشرطة بعد اسم قسمة بينما الشرطة بعد قوس فتح تبدأ تعبيرًا نمطيًا، تحت عنوان يقول قطّع الرموز أولًا ثم حلّل
سطر واحد ومرورَان وشرطة مائلة تعني شيئين مختلفين.

ثم يمرّ المرور الثاني على تلك الرموز بالترتيب ويفحص شكل ما يقرأ: أي الأقواس ما زالت مفتوحة، وأي الأسماء يحملها النطاق أصلًا، وهل كلمة مثل return حولها دالة. والمرجع هنا هو ECMA-262، المعيار الذي يقف خلف كل محرك.

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

وحالة واحدة تطلب نظرة ثانية بدل قاعدة: الشرطة المائلة معامل قسمة أو بداية تعبير نمطي، والجواب يتبع الرمز السابق. لذلك يسأل المقطّع الرمز الأخير عمّا كان.

والقوالب تضيف ثنية أخرى. ولأن القالب قد يحمل تعبيرًا بين قوسين معقوفين، يحفظ المقطّع كومة بالقالب الذي هو داخله. وبهذا يكون القوس في نصّ مجرّد نص، والقوس داخل قالب كودًا.

لماذا قد يبقى سكربت صحيح خاطئًا

القواعد والمعنى طبقتان منفصلتان. والمدقق يجيب عن سؤال القواعد، وكل مدقق مفيد يتوقف هناك.

لذلك يمرّ سكربت فيه متغير لم يُعلَن أبدًا في النمط الصارم، أو خاصية تُقرأ من قيمة تحمل undefined في تلك اللحظة، أو await داخل دالة ليست غير متزامنة. وكل واحد من هذه مشكلة تشغيل.

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

ولهذا تذكر الصفحة أول خطأ بدل مئة. لأن التحليل يتوقف هناك، فكل ما بعده تخمين، وقائمة التخمينات تزن أقل من حقيقة واحدة.

الفحوص الستة ومعنى كل واحد منها

الفحص الأول توازن الأقواس. والقارئ يبلّغ عن قوس معقوف أو مربع أو مستدير بلا شريك عند الموضع الذي استسلم فيه. في الواقع هذا هو العطل الوحيد الذي يكلّف الملف كله.

صورة من مدقق JavaScript بعد قراءة دالة من تسعة أسطر لم يُغلق قوسها الفاتح أبدًا، لوح السكربت على اليسار مع العدّادات تحته تقول تسعة أسطر وواحدًا وخمسين رمزًا ومئة وسبعة وخمسين حرفًا، وعلى اليمين سطر ملخص يقول السطر واحد قوس غير مغلق، توقف التحليل هنا، وفوقه ملاحظة واحدة تقول إن هذا القوس المعقوف لم يُغلق أبدًا، لذلك قُرئ كل سطر بعده كجزء مما فتحه
ست عائلات فحص وملاحظة واحدة في المرة: التحليل يتوقف عند أول خطأ، لذلك كان كل ما بعده سيصبح تخمينًا.

والثاني نصّ أو قالب غير مغلق. ولأن المقطّع يبلع كل ما يلي علامة تنصيص فاتحة، تذكر الملاحظة العلامة ونهاية الملف حيث توقف البحث.

والثالث رمز لا تسمح به القواعد. معاملان متتابعان، أو فاصلة في الموضع الخطأ، أو سهم بلا شيء قبله. لذلك يأتي كل واحد مع الرمز نفسه.

والرابع كلمة مفتاحية استُخدمت كاسم. لذلك يرفض القارئ إسنادًا إلى كلمة محجوزة، ومتغيرًا سُمّي بها، قبل أن يعمل شيء.

والخامس تكرار في نطاق واحد. وسيطان بالاسم نفسه، أو let يعيد اسمًا مُعلَنًا في الكتلة نفسها. ولأن الثاني يفوز في الحالة الأولى ويرفع خطأً في الثانية، يذكر القارئ كليهما.

والسادس return خارج دالة، وأقاربه. break بلا حلقة، وcase بلا switch، وyield بلا مولّد. لذلك تنتمي هذه إلى موضع واحد ولا موضع غيره.

ما لن تفعله هذه الصفحة

لن تشغّل سكربتك. لا شيء هنا ينشئ دالة أو يسند متغيرًا أو يبدأ مؤقتًا، لذلك لا شيء يقدر على التصرّف في الصفحة وأنت تقرأ.

صورة لعمودين تحت نتيجة المدقق بعنوان حيث تتوقف القراءة، الأول بعنوان يتحقق ويسرد أخطاء الصياغة وتوازن الأقواس والنصوص والقوالب غير المغلقة والكلمات المحجوزة المستخدمة كأسماء والإعلانات المكرّرة وreturn وbreak وyield في غير موضعها، والثاني بعنوان لا يتحقق ويسرد أخطاء التشغيل وأخطاء الأنواع ودعم المتصفحات وما إذا كان الكود يفعل ما قصدته
القواعد على اليسار، وكل ما يحتاج محركًا على اليمين.

ولن تبلّغ عن خطأ تشغيل ولا خطأ نوع ولا نداء شبكة فاشل. لأن هذه تحتاج محركًا، والمحرك موجود عندك في اللسان المجاور.

ولن تصلح الكود. فالتخمين بشأن القوس الناقص ملاحظة لا تعديل، لأن التصحيح التلقائي يحوّل خطأً واضحًا إلى تغيير سلوك صامت.

ولن تتحقق من الأنواع. فالملف الذي يحمل تعليق نوع يحمل أكثر من JavaScript، لذلك الصق خرج مترجمك بدل دخله.

خطوة بخطوة

كيف تستخدم مدقق JavaScript

أربع خطوات، ولا واحدة منها تطلب حسابًا.

  • 1

    الصق السكربت

    الصق أولًا ملفًا كاملًا أو دالة واحدة. ولأن القارئ يعمل على نص لا على صورة مترجَمة، يكفي مقطع ما دامت أقواسه متوازنة.

  • 2

    اختر نوع المصدر

    ثم اختر سكربتًا أو وحدة. ولأن import وexport ينتميان إلى وحدة، يقرر هذا الاختيار هل يقرأهما القارئ صحيحين أم خطأً.

  • 3

    اقرأ أول ملاحظة

    بعد ذلك اذهب إلى السطر والعمود الذي تذكره. ولأن التحليل يتوقف عند أول عطل، تكون الملاحظة الثانية نتيجة لا زلّة ثانية.

  • 4

    صحّح وأعد التشغيل ثم تابع

    أخيرًا عدّل في محرّرك والصق مرة أخرى لتتأكد أن العدّاد صفر. بعد ذلك يصبح الملف جاهزًا للمصغّر أو للمتصفح.

لماذا هذه الصفحة

لماذا تستخدم مدقق JavaScript هذا

خمسة أسباب، وكل واحد يوفّر جلسة تصحيح.

  • يذكر سطرًا وعمودًا

    لأن الملاحظة تحمل الاثنين، تهبط على الحرف لا على المنطقة. وبذلك يصبح ملف من مئتي سطر قراءة قصيرة لا مطاردة.

  • يشرح لماذا توقف التحليل

    الملاحظة تقول ما توقعته القواعد عند ذلك الموضع. لذلك يتضح الإصلاح غالبًا من الملاحظة وحدها، بلا رأي ثان.

  • لا شيء يُنفَّذ

    لأن السكربت يُقرأ فقط، لا يقدر مقطع من شخص مجهول على التصرّف وأنت تنظر إليه. لذلك يكون المدقق المكان الآمن للصق واحد.

  • لا شيء يُرفع

    التحليل يحدث هنا ولا مكان غيره. لذلك يمكن لصق ملف من مستودع خاص بلا خطر.

  • يقرأ الصياغة الحديثة

    لأن القواعد تتبع المعيار الحالي، تُقرأ الدالة السهمية والسلسلة الاختيارية وحقل الصنف. وبذلك لا يُعلَّم ملف حديث لأنه حديث.

قواعد عملية

عادات تحفظ السكربت مقروءًا

ست عادات تحفظ السكربت سهل القراءة وسريع التدقيق.

  • أغلق القوس وأنت تفتحه وبذلك يكون الشريك موجودًا حين تملأ الوسط. في الواقع عادة صغيرة تزيل أغلى صنف من أخطاء الصياغة.
  • اكتب في النمط الصارم الوحدة صارمة أصلًا، والسكربت يستطيع طلب ذلك بتوجيه في السطر الأول. ولأن النمط الصارم يحوّل عدة زلّات صامتة إلى أخطاء، يتوقف محركك عندها بدل أن يمضي بهدوء.
  • فضّل const ثم let var المُعلَن داخل كتلة يخصّ الدالة، وهناك يختبئ الاستعمال المتكرر بالخطأ. لذلك قد يكون اسمان يبدوان منفصلين اسمًا واحدًا.
  • تعليمة واحدة في كل سطر المحرك يضيف الفواصل المنقوطة الناقصة، لكنه لا يخمّن قصدك دائمًا. ولأن تعليمة واحدة في السطر تزيل اللبس، لا يحتاج القارئ إلى التخمين أبدًا.
  • دقّق قبل التصغير المصغّر يثق بدخله، لذلك يخرج السكربت المكسور مكسورًا وأصعب قراءة. لذلك افحص الملف المقروء أولًا، حيث تعني أرقام الأسطر شيئًا.
  • الصق الخرج المترجَم تعليق النوع ليس JavaScript، لذلك لن يُقرأ ملف يحمل واحدًا. لذلك شغّل المترجم أولًا وافحص ما أخرجه.
انتبه هنا

ست طرق يفشل بها سكربت في القراءة

كل واحدة من هذه توقف الملف كله، لذلك لا تمرّ أي منها دون أن تُلاحظ.

  • قوس أُغلق بترتيب خطأ

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

  • علامة تنصيص داخل نصّ من النوع نفسه

    علامة تنصيص غير محمية تُنهي النصّ مبكرًا. ولأن المقطّع يقرأ الباقي كودًا، يظهر الخطأ بعد أسطر كثيرة من الزلّة.

  • شرطة مائلة تعني قسمة

    بعد سطرين من فاصلة منقوطة ناقصة، قد تبدأ الشرطة تعبيرًا نمطيًا بدل أن تقسم. لذلك تصير علامة ناقصة خطأً محيّرًا عن نمط.

  • قالب لا يُغلق أبدًا

    علامة خلفية تُركت مفتوحة تبلع باقي الملف. لذلك تذكر الملاحظة العلامة الفاتحة ونهاية الدخل بدل السطر الذي قصدت إصلاحه.

  • فاصلة في موضع فاصلة منقوطة

    داخل كائن تصحّ الفاصلة وداخل كتلة تخطئ. ولأن الاثنتين تتشابهان في النظرة الأولى، تنجو هذه من قراءة متأنّية.

  • كلمة مفتاحية استُخدمت كاسم

    شيء اسمه class أو default يُقرأ في موضع ولا يُقرأ في آخر. لذلك قد يكون الاسم الذي نجح في ملف خطأً في الملف التالي.

أسئلة

أسئلة عن مدقق JavaScript

هل مدقق JavaScript هذا مجاني؟

نعم. لا حساب ولا حدّ ولا خطة مدفوعة. لذلك تدقّق ما تشاء من السكربتات.

هل يشغّل الكود؟

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

وما الذي يتحقق منه؟

ست عائلات: توازن الأقواس، والنصوص والقوالب غير المغلقة، والرموز التي ترفضها القواعد، والكلمات المحجوزة المستخدمة كأسماء، والتكرار داخل النطاق نفسه، وكذلك return وbreak وyield في غير موضعها.

أي إصدار من JavaScript يقبله؟

المعيار الحالي حتى ES2024. لذلك تُقرأ الدالة السهمية والسلسلة الاختيارية وحقل الصنف وawait في أعلى مستوى الوحدة دون شكوى.

هل يجد أخطاء التشغيل؟

لا. خطأ التشغيل يحتاج محركًا ينفّذ الكود، وذلك عمل آخر. لذلك تجيب هذه الصفحة عن سؤال القواعد وحده.

ولماذا يبلّغ عن خطأ واحد فقط؟

لأن التحليل يتوقف عند أول عطل. وكل ما يأتي بعده تخمين، وحقيقة واحدة أنفع من مئة تخمين.

هل يُرفع السكربت إلى مكان ما؟

لا. كل التدقيق يجري في لسان المتصفح هذا. لذلك يبقى سكربت تحت بند سرّية في مكانه.

هل أدقّق مقطعًا بدل ملف كامل؟

نعم. دالة واحدة تكفي ما دامت أقواسها متوازنة. وبعدها تشير أرقام الأسطر إلى الأسطر التي لصقتها.

هل يفهم JSX أو TypeScript؟

ليس مباشرة، لأنهما امتدادان وليسا JavaScript. لذلك شغّل المترجم أولًا ودقّق ما يخرج منه.

ما الفرق بين خطأ الصياغة وخطأ النوع؟

خطأ الصياغة يعني أن أي جزء من الملف لم يعمل. أما خطأ النوع فيحدث أثناء التشغيل، في سطر قُرئ بالفعل. لذلك يحتاج الاثنان تصحيحًا مختلفًا.

هل يتحقق من دعم المتصفحات؟

لا. قد تكون التعليمة صحيحة ولا تفعل شيئًا في المتصفح الذي يهمّك. في الواقع القواعد والدعم سؤالان منفصلان.

هل يصلح الخطأ عني؟

لا، وهذا مقصود. لأن التصحيح التلقائي يحوّل خطأً واضحًا إلى تغيير سلوك صامت، وذاك أصعب في العثور عليه من الملاحظة نفسها.

ولماذا يُعلَّم كودي بسبب شرطة مائلة؟

الشرطة المائلة قسمة أو بداية تعبير نمطي، والجواب يتبع الرمز السابق لها. وبلا فاصلة منقوطة في موضعها يضطر القارئ إلى الاختيار، ثم تقول الملاحظة أيّهما اختار.

هل يعمل مع وحدة؟

نعم. اختر نوع المصدر وحدة، ثم يصبح import وexport صحيحين، بينما السكربت العادي يقرأ كليهما خطأً. كذلك تعامل الوحدة let وstatic وyield كلمات محجوزة، لذلك قد يفشل هنا اسم يمر في سكربت.

هل أدقّق ملفًا مصغّرًا؟

نعم، لكن أرقام الأسطر تنفع أقل بكثير. لأن الملف المصغّر غالبًا سطر واحد طويل، ارجع إلى المصدر المقروء للتصحيح.

هل يحسب شيئًا؟

نعم. الملخص يذكر الأسطر والرموز والحروف، وهذا ينفع حين تتأكد أن اللصق لم يفقد شيئًا في النهاية.

هل هو مثل الـ linter؟

لا. الـ linter يذكر مشكلات الأسلوب والمتغيرات غير المستخدمة، وهي أمور لا تهمّ المحلّل. لذلك فالنتيجة النظيفة هنا تعني أن الملف يُقرأ، ولا شيء أكثر.

هل يعمل على الهاتف؟

نعم. تتراكم الألواح وتنعطف الملاحظات. لذلك ينجح تدقيق سريع من الهاتف، لكن الملف الطويل أسهل بلوحة مفاتيح.

هل أنزّل الملاحظات؟

نعم. التنزيل يكتب الملاحظات في ملف نصي، وهذا مريح حين تطلب تذكرة العمل أرقام الأسطر بدقّة.

هل أحتاج حسابًا أو إضافة؟

لا. لا تسجيل ولا مُلحق ولا إضافة تُضاف. لذلك تغلق اللسان فبمجرد أن يُقرأ السكربت.

نواصل

أدوات تسير مع هذه

أربع صفحات يؤدي إليها العمل نفسه غالبًا.

  • مصغّر JavaScript

    فبمجرد أن يُقرأ السكربت، أخرج المسافات والتعليقات. ولأن المتصفح ينزّل كل بايت، صغّر بعد التدقيق لا قبله.

    افتح الأداة ←
  • مجمّل الكود

    الملف الذي يُقرأ قد يبقى سيّئ القراءة. لذلك أعد ضبط إزاحته وثبّت أسلوب الأقواس قبل المراجعة التالية.

    افتح الأداة ←
  • منسّق JSON

    أكثر أعطال السكربت هنا تأتي من البيانات لا من المنطق. لذلك افتح الحِمل وتأكد أنه يُقرأ أيضًا.

    افتح الأداة ←
  • مدقق CSS

    النصف الآخر من بناء الواجهة. ولأن المتصفح يرمي تصريحًا به خطأ طباعة في صمت، تستحق تلك الورقة الفحص نفسه.

    افتح الأداة ←

اعرف السطر الذي يرفضه المحرك

الصق السكربت، ثم اقرأ أول ملاحظة، صحّحها وأعد التشغيل. لا شيء يُنفَّذ ولا شيء يُرفع. كما أن معظم الملفات تُقرأ قبل أن يغلي الماء، لأن الملاحظة تدلّك على الحرف نفسه.