ما هو تصنيف الصفيف الحرفي في javascript ومتى يجب استخدامه؟




arrays jslint (3)

إن الترقيم الحرفي للمصفوفة هو المكان الذي تحدد فيه صفيفًا جديدًا باستخدام الأقواس الفارغة. في المثال الخاص بك:

var myArray = [];

إنها طريقة "جديدة" لتحديد المصفوفات ، وأعتقد أنه أقصر / أنظف.

توضح الأمثلة أدناه الفرق بينهما:

var a = [],            // these are the same
    b = new Array(),   // a and b are arrays with length 0

    c = ['foo', 'bar'],           // these are the same
    d = new Array('foo', 'bar'),  // c and d are arrays with 2 strings

    // these are different:
    e = [3],             // e.length == 1, e[0] == 3
    f = new Array(3);   // f.length == 3, f[0] == undefined

المرجع : ما هو الفرق بين "Array ()" و "[]" أثناء إعلان صفيف JavaScript؟

JSLint يعطيني هذا الخطأ:

المشكلة في السطر 11 ، الحرف 33: استخدم الترقيم الحرفي للمصفوفة [].

var myArray = new Array();

ما هي مجموعة من الرموز الحرفية ولماذا تريد مني استخدامها بدلاً من ذلك؟

يظهر هنا أن new Array(); يجب أن تعمل بشكل جيد ... هل هناك شيء مفقود؟


انظر أيضا: ما هو الخطأ في var x = Array ()؛

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

// this is a Python list
a = [66.25, 333, 333, 1, 1234.5]

// this is a Python dictionary
tel = {'jack': 4098, 'sape': 4139}

أليس من البديهي أن بيثون صارت نحوية نحويًا جافاسكريبت؟ (نعم ، نهايات semi-colons مفقودة ، ولكن تلك غير مطلوبة لجافا سكريبت ، إما)

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


بعد النظر إلىecMode jsperf ، أجريت بعض الاختبارات الأخرى.

عند استخدام الضغط للإضافة إلى المصفوفة ، يكون Array () الجديد أسرع بشكل كبير على Chrome:

http://jsperf.com/new-vs-literal-array-declaration/2

يعد استخدام الفهرس لإضافة أسرع قليلاً لـ [].





literals