The --fix
option on the command line can automatically fix some of the problems reported by this rule.
Some style guides require or disallow spaces before or after unary operators. This is mainly a stylistic issue, however, some JavaScript expressions can be written without spacing which makes it harder to read and maintain.
This rule enforces consistency regarding the spaces after words
unary operators and after/before nonwords
unary operators.
Examples of unary words
operators:
// new var joe = new Person(); // delete var obj = { foo: 'bar' }; delete obj.foo; // typeof typeof {} // object // void void 0 // undefined
Examples of unary nonwords
operators:
if ([1,2,3].indexOf(1) !== -1) {}; foo = --foo; bar = bar++; baz = !foo; qux = !!baz;
This rule has three options:
words
- applies to unary word operators such as: new
, delete
, typeof
, void
, yield
nonwords
- applies to unary operators such as: -
, +
, --
, ++
, !
, !!
overrides
- specifies overwriting usage of spacing for each operator, word or non word. This is empty by default, but can be used to enforce or disallow spacing around operators. For example:"space-unary-ops": [ 2, { "words": true, "nonwords": false, "overrides": { "new": false, "++": true } }]
In this case, spacing will be disallowed after a new
operator and required before/after a ++
operator.
Examples of incorrect code for this rule with the default {"words": true, "nonwords": false}
option:
/*eslint space-unary-ops: "error"*/ typeof!foo; void{foo:0}; new[foo][0]; delete(foo.bar); ++ foo; foo --; - foo; + "3";
/*eslint space-unary-ops: "error"*/ /*eslint-env es6*/ function *foo() { yield(0) }
/*eslint space-unary-ops: "error"*/ async function foo() { await(bar); }
Examples of correct code for this rule with the {"words": true, "nonwords": false}
option:
/*eslint space-unary-ops: "error"*/ // Word unary operator "delete" is followed by a whitespace. delete foo.bar; // Word unary operator "new" is followed by a whitespace. new Foo; // Word unary operator "void" is followed by a whitespace. void 0; // 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"*/ /*eslint-env es6*/ function *foo() { yield (0) }
/*eslint space-unary-ops: "error"*/ async function foo() { await (bar); }
This rule was introduced in ESLint 0.10.0.
© JS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/rules/space-unary-ops