ما هو الترميز الحرفي في جافا سكريبت ومتى يجب عليك استخدامه؟

StackOverflow https://stackoverflow.com/questions/1094723

سؤال

JSLINT تعطيني هذا الخطأ:

مشكلة في الخط 11 حرف 33: استخدم مجموعة الترميز الحرفي [].

var myArray = new Array();

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

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

هل كانت مفيدة؟

المحلول

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

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

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

نصائح أخرى

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

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

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

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

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

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

بصرف النظر عن حجة كروكفورد، يقول JSPERF إنها أسرع. http://jsperf.com/new-vs-literal-array-declaration.

بعد النظر في ميمود jsperf، فعلت بعض الاختبارات الإضافية.

عند استخدام Push لإضافتها إلى مجموعة صفيف جديدة () هي أسرع بكثير في Chrome:

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top