space-unary-ops
Принудительное соблюдение одинакового отступа перед или после унарных операторов
Некоторые проблемы, выявленные этой правилом, автоматически исправимы с помощью опции --fix командной строки
Это правило было устаревшим в ESLint v8.53.0. Пожалуйста, используйте соответствующее правило соответствующее правило в @stylistic/eslint-plugin-js.
Некоторые руководства по стилю требуют или запрещают пробелы перед или после унарных операторов. Это в основном вопрос стиля, однако некоторые выражения JavaScript могут быть написаны без пробелов, что затрудняет чтение и поддержку.
Подробное описание правила
Это правило требует согласованности в отношении пробелов после words унарных операторов и перед/после nonwords унарных операторов.
Для words операторов это правило применяется только тогда, когда пробел не является синтаксически обязательным. Например, delete obj.foo требует пробела и не будет учитываться этим правилом. Эквивалентное выражение delete(obj.foo) имеет необязательный пробел (delete (obj.foo)), поэтому это правило будет к нему применено.
Примеры унарных words операторов:
// new
var joe = new Person();
// delete
var obj = {
foo: 'bar'
};
delete obj.foo;
// typeof
typeof {} // object
// void
void 0 // undefined
Примеры унарных nonwords операторов:
if ([1,2,3].indexOf(1) !== -1) {};
foo = --foo;
bar = bar++;
baz = !foo;
qux = !!baz;
Параметры
Это правило имеет три параметра:
-
words- применяется к унарным операторам-словам, таким как:new,delete,typeof,void,yield -
nonwords- применяется к унарным операторам, таким как:-,+,--,++,!,!! -
overrides- определяет переопределение использования отступов для каждого оператора, слова или не слова. По умолчанию он пуст, но может быть использован для принудительного или запрета пробелов вокруг операторов. Например:
"space-unary-ops": [
2, {
"words": true,
"nonwords": false,
"overrides": {
"new": false,
"++": true
}
}]
В этом случае пробелы будут запрещены после new оператора и обязательны перед/после ++ оператора.
Примеры неправильного кода для этого правила с параметром {"words": true, "nonwords": false} по умолчанию:
/*eslint space-unary-ops: "error"*/
;
;
;
;
;
;
;
;
/*eslint space-unary-ops: "error"*/
function *foo() {
}
/*eslint space-unary-ops: "error"*/
async function foo() {
;
}
Примеры правильного кода для этого правила с параметром {"words": true, "nonwords": false}:
/*eslint space-unary-ops: "error"*/
// Word unary operator "typeof" is followed by a whitespace.
typeof !foo;
// Word unary operator "void" is followed by a whitespace.
void {foo:0};
// Word unary operator "new" is followed by a whitespace.
new [foo][0];
// Word unary operator "delete" is followed by a whitespace.
delete (foo.bar);
// Unary operator "++" is not followed by whitespace.
++foo;
// Unary operator "--" is not preceded by whitespace.
foo--;
// Unary operator "-" is not followed by whitespace.
-foo;
// Unary operator "+" is not followed by whitespace.
+"3";
/*eslint space-unary-ops: "error"*/
function *foo() {
yield (0)
}
/*eslint space-unary-ops: "error"*/
async function foo() {
await (bar);
}
Версия
Это правило было введено в ESLint v0.10.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/space-unary-ops