Я не понимаю, почему я получаю сообщение об ошибке, когда я выполняю 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 suggets для использования пустого массива (который является []
)
: Я нашел ответ. Я был неправ. Нет ничего неправильно с var os_map = {}
. Код показали в сообщении об ошибке, потому что я не использовал "require strict";
. Я понял сообщение об ошибке превратно. Спасибо за ответ на мои вопросы.
Ошибочная строка:
var os_autoload_inputs = new Array('searchInput', 'searchInput2',
'powerSearchText', 'searchText');
JSLint не ожидает , что увидит новый конструктор Array
, вам следует использовать [] вместо:
var os_autoload_inputs = ['searchInput', 'searchInput2',
'powerSearchText', 'searchText'];
Почему? :
1, Крокфорду не нравится новый
.
2, Объект Массив
можно переопределить:
Array = {};
new Array(); // TypeError: Array is not a constructor
3, Несоответствия использования, д. g.:
var a = new Array(5); // empty 5 elements array
var b = [5]; // 1 element array containing the 5 number on index 0
См. также:
Я прочитал строку 28 в , что код :
var os_autoload_forms = new Array('searchform', 'searchform2', 'powersearch', 'search' );
... где действительно было бы уместно использовать синтаксис литерального массива:
var os_autoload_forms = ['searchform', 'searchform2', 'powersearch', 'search' ];
Он должен однако сказать то же самое о строке 27.