ESLint принимает собственные решения о том, что он считает допустимыми или недействительными предупреждениями или ошибками. Вы должны относиться ко всему, что eslint / jslint / jshint говорит как рекомендательное в дополнение ко всему остальному. По словам кого-то, их предложения оптимальны и совершенно правильны.
При этом у вас есть некоторые опции для подавления этого конкретного предупреждения:
eslint
в комментарии в коде eslint
с настройкой, чтобы указать этот флаг --use-strict
при запуске node
Конкретная причина, почему вы получаете это предупреждение, связана с тем, что интерпретатор узла по умолчанию в его нынешнем виде не полностью готов к ES6. Например, в узле 4 вы не можете использовать let
вне строгого режима, хотя let
является ключевым словом ES6.
Я уверен, что это все еще поддерживается, но это является в значительной степени устаревшим. Если Вы хотите, чтобы regex был скомпилирован только однажды, Вы - более обеспеченное использование объекта regex, как так:
my $reg = qr/foo$bar/;
Интерполяция $bar
сделан, когда переменная инициализируется, таким образом, Вы будете всегда использовать кэшируемый, скомпилированный regex с тех пор в объеме включения. Но иногда Вы хотите, чтобы regex был перекомпилирован, потому что Вы хотите, чтобы он использовал новое значение переменной. Вот является пример Friedl, используемым в Книге:
sub CheckLogfileForToday()
{
my $today = (qw<Sun Mon Tue Wed Thu Fri Sat>)[(localtime)[6]];
my $today_regex = qr/^$today:/i; # compiles once per function call
while (<LOGFILE>) {
if ($_ =~ $today_regex) {
...
}
}
}
В рамках функции остается таким же значение $today_regex. Но в следующий раз, когда функция вызвана, regex будет перекомпилирован с новым значением $today
. Если он только что использовал
if ($_ =~ m/^$today:/io)
... regex никогда не обновлялся бы. Так, с объектной формой у Вас есть эффективность/o, не жертвуя гибкостью.
/o
модификатор находится в документация perlop вместо документация perlre , так как это - подобный кавычке модификатор, а не regex модификатор. Это всегда казалось нечетным мне, но это - то, как это. Начиная с Perl 5.20 это теперь перечислено в perlre просто, чтобы отметить, что Вы, вероятно, не должны использовать его.
Перед Perl 5.6, Perl перекомпилировал бы regex, даже если переменная не изменилась. Вы не должны больше делать этого. Вы могли использовать /o
для компиляции regex однажды несмотря на дальнейшие изменения в переменной, но как другие отмеченные ответы, qr//
лучше для этого.
Это - оптимизация в случае, что regex включает ссылку на переменную. Это указывает, что regex не изменяется даже при том, что это имеет переменную в нем. Это допускает оптимизацию, которая не была бы возможна иначе.