По состоянию на 14 января 2016 года JSLint начал жаловаться на объявления var
или let
, которые содержат более одной переменной для каждого объявления, и создали новую директиву multivar
, которая игнорирует эту новую "проблему".
Это довольно значительное изменение, поскольку более ранние версии будут жаловаться, если у вас было два var
в одном и том же блоке кода.
То есть, на сегодняшний день (18 января 2016 года) этот код теперь разбивается на JSLint:
/*jslint white:true, browser:true, devel:true */
function a(b) {
"use strict";
var c, d; // <<< Now bad!!
d = "test";
c = d + b;
console.log(c);
}
Сообщается об ошибке, Expected ';' and instead saw ','.
для строки var c,d;
"Правильное" исправление, по-видимому, таково:
/*jslint white:true, browser:true, devel:true */
function a(b) {
"use strict";
var c;
var d; // <<< this *used* to be forbidden.
d = "test";
c = d + b;
console.log(c);
}
Обратите внимание, что этот новый правильный код привел бы ошибку, Error: combine_var
, в более ранних версиях JSLint.
Единственное описание изменения, которое я могу найти в Crockford, похоже, этот пост в Google Plus:
JSLint теперь имеет параметр
multivar
, допускающий множественные имена, объявляемые в одном выражении var, let или const.
... и краткое упоминание о инструкциях веб-сайта...
Толерантное объявление нескольких переменных для каждого оператора
multivar
true
Если операторvar
,let
илиconst
может объявить две или более переменных в одном утверждении.
Изменение multivar
на JSLint.com пока не похоже на репозиторий GitHub. Посмотрите две проверки (1, 2) под названием "var" за 14 января. Эти два делают код в JSLint следующим за новым требованием, но не (afaict) добавляют директиву multivar
, описанную и используемую на JSLint.com.
Может ли кто-нибудь сказать мне, почему несколько строк var
поощряются/требуются сейчас, кроме обычного, "вы должны игнорировать JSLint", ответы? То есть, , почему перед тем, как нужно было указать один var, я бы предпочел, чтобы поощрить понимание подъема), и почему это рассуждение внезапно вызывается?