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




jslint literals (5)

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

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(); يجب أن تعمل بشكل جيد ... هل هناك شيء مفقود؟


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

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

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

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



انظر أيضا: ما هو الخطأ في 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 مفقودة ، ولكن تلك غير مطلوبة لجافا سكريبت ، إما)

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


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

var foo = [object,object,object];
for (var i = foo.length, item; item = foo[--i];) {
    console.log(item);
}

الايجابيات:

فائدة هذا: لديك بالفعل إشارة في أول مثل هذا لن تحتاج إلى أن يعلن لاحقا مع خط آخر. ومن السهل عندما looping الحوض الصغير صفيف الكائن.

سلبيات:

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





javascript arrays jslint literals