“Use the array literal notation []” for var os_map = {}

后端 未结 4 1076
梦毁少年i
梦毁少年i 2021-01-02 03:56

I don\'t understand why I get the error message when I run JSLint with a JavaScript file.

I get the message var os_map = {}; Problem at line 28 character 36: Us

相关标签:
4条回答
  • 2021-01-02 04:05

    My read of line 28 in that code is:

    var os_autoload_forms = new Array('searchform', 'searchform2', 'powersearch', 'search' );
    

    ...where it would indeed be appropriate to use the literal array syntax:

    var os_autoload_forms = ['searchform', 'searchform2', 'powersearch', 'search' ];
    

    It should be saying the same thing about line 27, though.

    0 讨论(0)
  • 2021-01-02 04:07

    Change this:

    var a = new Array(5);
    

    for this:

    var a = new [].constructor(5);
    
    0 讨论(0)
  • 2021-01-02 04:12

    The offending line:

    var os_autoload_inputs = new Array('searchInput', 'searchInput2',
                                       'powerSearchText', 'searchText');
    

    JSLint does not expect to see new Array constructor, you should use [] instead:

    var os_autoload_inputs = ['searchInput', 'searchInput2',
                                       'powerSearchText', 'searchText'];
    

    Why? :

    1, Crockford doesn't like new.

    2, The Array object could be overridden:

    Array = {};
    new Array(); // TypeError: Array is not a constructor
    

    3, Usage inconsistencies, e.g.:

    var a = new Array(5); // empty 5 elements array
    var b = [5]; // 1 element array containing the 5 number on index 0
    

    See also:

    • What’s the difference between “Array()” and “[]” while declaring a JavaScript array?
    • What’s wrong with var x = new Array();
    0 讨论(0)
  • 2021-01-02 04:16

    Problem at line 16 character 32: Use the array literal notation []. if I run this code in JSLint. The options for the JSLint as the following.

    just do

    var arrayName= [];

    0 讨论(0)
提交回复
热议问题