"Использовать литеральную литературу массива []" для var os_map = {}
Я не понимаю, почему я получаю сообщение об ошибке при запуске JSLint с файлом JavaScript.
Я получаю сообщение var os_map = {}; Problem at line 28 character 36: Use the array literal notation [].
, если я запустил этот код в JSLint. Параметры для JSLint следующие.
/*jslint onevar: true, browser: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true */
Заявляющий объект (, который есть {}
) должен быть в порядке, но JSLint предлагает использовать пустой массив (, который является []
)
: Я нашел ответ. Я был неправ. Нет ничего плохого в var os_map = {}
. Код был указан в сообщении об ошибке, потому что я не использовал "require strict";
. Я получил сообщение об ошибке неправильно. Спасибо, что ответили на мои вопросы.
Ответы
Ответ 1
Линия нарушения:
var os_autoload_inputs = new Array('searchInput', 'searchInput2',
'powerSearchText', 'searchText');
JSLint делает не ожидать, чтобы видеть конструктор new Array
, вы должны использовать [] вместо:
var os_autoload_inputs = ['searchInput', 'searchInput2',
'powerSearchText', 'searchText'];
Почему?
1, Крокфорду не нравится new
.
2, объект Array
может быть переопределен:
Array = {};
new Array(); // TypeError: Array is not a constructor
3, Несоответствия использования, например:
var a = new Array(5); // empty 5 elements array
var b = [5]; // 1 element array containing the 5 number on index 0
См. также:
Ответ 2
Измените это:
var a = new Array(5);
для этого:
var a = new [].constructor(5);
Ответ 3
Я прочитал строку 28 в что код:
var os_autoload_forms = new Array('searchform', 'searchform2', 'powersearch', 'search' );
... где действительно было бы целесообразно использовать синтаксис литерала:
var os_autoload_forms = ['searchform', 'searchform2', 'powersearch', 'search' ];
Следует сказать то же самое о строке 27.
Ответ 4
Проблема с символом строки 16:
Используйте литеральную запись массива [].
если я запустил этот код в JSLint.
Параметры для JSLint следующие.
просто
var arrayName = [];