javascript - لماذا يلقي JSHint تحذيرًا إذا كنت أستخدم const؟



node.js jslint (7)

هذا هو الخطأ الذي أحصل عليه عند استخدام const:

<error line="2" column="1" severity="warning" message="&apos;const&apos; is available in ES6 (use esnext option) or Mozilla JS extensions (use moz)." source="jshint.W104" />

تبدو شفرتي كالتالي:

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};

رمز يعمل بشكل جيد فقط JSHint يحذرني في كل مرة.


Answers

يمكنك إضافة ملف باسم .jshintrc في جذر تطبيقك باستخدام المحتوى التالي لتطبيق هذا الإعداد على الحل بالكامل :

{
    "esversion": 6
}

يقترح إجابة جاك أنه يمكنك إضافة تعليق /*jshint esversion: 6 */ لكل ملف ، ولكنه عمل أكثر من اللازم إذا كنت تحتاج إلى التحكم في العديد من الملفات.


أنشئ ملفًا يسمى jshint_opts بهذا المحتوى: {"esversion": 6}

ثم استدعاء jshint بشيء مثل سطر الأوامر هذا:

jshint --config jshint_opts lib / *. js


إذا كنت تستخدم VSCode:

  • انتقل إلى التفضيلات -> الإعدادات ( cmd + , )
  • اكتب jshint.options في شريط البحث
  • مرر فوقه وانقر على رمز القلم الرصاص
  • تعلق الآن على الجانب الأيمن.
  • إضافة "esversion": 6 إلى كائن الخيارات.

أو ببساطة أضف هذا إلى إعدادات المستخدم الخاصة بك:

"jshint.options": {
    "esversion": 6
}

تلقيت هذا التحذير نفسه عند استخدام بيان تصدير. أنا أستخدم كود VS واستخدمت مقاربة مشابهة لحل Wenlong Jiang.

  1. إعدادات المستخدم
  2. JSHint التكوين
  3. "jshint.options": {} (تعديل)
  4. استخدم علامات اقتباس مزدوجة عند تحديد "esversion"

    "jshint.options": {"esversion": 6،}

لا يعد إنشاء ملف .jshintrc أمرًا ضروريًا إذا كنت تريد تهيئة إعدادات jshint العامة لمحررك


يمكنك تحديد التحويل: 6 داخل كائن خيارات jshint. يرجى الاطلاع على الصورة. أنا أستخدم المساعد grunt-contrib-jshint.


عند الاعتماد على ميزات ECMAScript 6 مثل const ، يجب عليك تعيين هذا الخيار حتى لا تثير JSHint تحذيرات غير ضرورية.

/ * jshint esnext: true * / ( تعديل 2015.12.29 : بناء الجملة المحدثة لعكس تعليقات @ Olga )

/*jshint esversion: 6 */

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};

يخبر هذا الخيار ، كما يوحي الاسم ، JSHint بأن شفرتك تستخدم بناء جملة محدد ECMAScript 6. http://jshint.com/docs/options/#esversion

تعديل 2017.06.11 : أضاف خيارًا آخر يستند إلى هذه الإجابة .

بينما يعمل التهيئة المضمنة بشكل جيد لملف فردي ، يمكنك أيضًا تمكين هذا الإعداد للمشروع بأكمله عن طريق إنشاء ملف .jshintrc في جذر مشروعك وإضافته إلى هناك.

{
  "esversion": 6
}

يمنع JSON hijacking ، وهي مشكلة أمان JSON رئيسية تم حلها رسميًا في جميع المتصفحات الرئيسية منذ عام 2011 باستخدام ECMAScript 5.

مثال مفترض: قل أن Google لديه عنوان URL مثل mail.google.com/json?action=inbox والذي يعرض أول 50 رسالة من صندوق الوارد الخاص بك بتنسيق JSON. لا يمكن لمواقع الويب الشر على النطاقات الأخرى تقديم طلبات AJAX للحصول على هذه البيانات بسبب سياسة الأصل نفسه ، لكن يمكنها تضمين عنوان URL عبر علامة <script> . يتم زيارة عنوان URL مع ملفات تعريف الارتباط الخاصة بك ، وبإلغاء طرق إنشاء مُنشئ الصفيف العام أو ملحقاته ، يمكن أن يكون لديهم طريقة تسمى كلما تم تعيين سمة كائن (صفيف أو تجزئة) ، مما يسمح لهم بقراءة محتوى JSON.

في while(1); أو &&&BLAH&&& يمنع هذا: &&&BLAH&&& طلب AJAX على mail.google.com بالوصول الكامل إلى المحتوى النصي ، ويمكنه تجريده بعيدًا. لكن إدراج علامة <script> ينفذ JavaScript بشكل عمياء دون أي معالجة ، مما ينتج عنه حلقة لا نهائية أو خطأ في بناء الجملة.

هذا لا يعالج مشكلة تزوير طلب المواقع المشتركة .





javascript node.js const jslint jshint