Showing 569 of 569 total issues
Unexpected tab character. Open
if (typeof username === 'undefined' || typeof password === 'undefined') {
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
}
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
}
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
// If all goes according to plan, it is safe to continue to the next middleware
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
];
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
if (validationResult.status === true) {
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Expected to return a value at the end of function. Open
module.exports.updateCategory = function(req, res) {
- Read upRead up
- Exclude checks
require return
statements to either always or never specify values (consistent-return)
Unlike statically-typed languages which enforce that a function returns a specified type of value, JavaScript allows different code paths in a function to return different types of values.
A confusing aspect of JavaScript is that a function returns undefined
if any of the following are true:
- it does not execute a
return
statement before it exits - it executes
return
which does not specify a value explicitly - it executes
return undefined
- it executes
return void
followed by an expression (for example, a function call) - it executes
return
followed by any other expression which evaluates toundefined
If any code paths in a function return a value explicitly but some code path do not return a value explicitly, it might be a typing mistake, especially in a large function. In the following example:
- a code path through the function returns a Boolean value
true
- another code path does not return a value explicitly, therefore returns
undefined
implicitly
function doSomething(condition) {
if (condition) {
return true;
} else {
return;
}
}
Rule Details
This rule requires return
statements to either always or never specify values. This rule ignores function definitions where the name begins with an uppercase letter, because constructors (when invoked with the new
operator) return the instantiated object implicitly if they do not return another object explicitly.
Examples of incorrect code for this rule:
/*eslint consistent-return: "error"*/
function doSomething(condition) {
if (condition) {
return true;
} else {
return;
}
}
function doSomething(condition) {
if (condition) {
return true;
}
}
Examples of correct code for this rule:
/*eslint consistent-return: "error"*/
function doSomething(condition) {
if (condition) {
return true;
} else {
return false;
}
}
function Foo() {
if (!(this instanceof Foo)) {
return new Foo();
}
this.a = 0;
}
Options
This rule has an object option:
-
"treatUndefinedAsUnspecified": false
(default) always either specify values or returnundefined
implicitly only. -
"treatUndefinedAsUnspecified": true
always either specify values or returnundefined
explicitly or implicitly.
treatUndefinedAsUnspecified
Examples of incorrect code for this rule with the default { "treatUndefinedAsUnspecified": false }
option:
/*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": false }]*/
function foo(callback) {
if (callback) {
return void callback();
}
// no return statement
}
function bar(condition) {
if (condition) {
return undefined;
}
// no return statement
}
Examples of incorrect code for this rule with the { "treatUndefinedAsUnspecified": true }
option:
/*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": true }]*/
function foo(callback) {
if (callback) {
return void callback();
}
return true;
}
function bar(condition) {
if (condition) {
return undefined;
}
return true;
}
Examples of correct code for this rule with the { "treatUndefinedAsUnspecified": true }
option:
/*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": true }]*/
function foo(callback) {
if (callback) {
return void callback();
}
// no return statement
}
function bar(condition) {
if (condition) {
return undefined;
}
// no return statement
}
When Not To Use It
If you want to allow functions to have different return
behavior depending on code branching, then it is safe to disable this rule.
Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
postCategories.addCategory(req, res);
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
];
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
if (validationResult.status === true) {
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Expected to return a value at the end of function. Open
module.exports = function(req, res, next) {
- Read upRead up
- Exclude checks
require return
statements to either always or never specify values (consistent-return)
Unlike statically-typed languages which enforce that a function returns a specified type of value, JavaScript allows different code paths in a function to return different types of values.
A confusing aspect of JavaScript is that a function returns undefined
if any of the following are true:
- it does not execute a
return
statement before it exits - it executes
return
which does not specify a value explicitly - it executes
return undefined
- it executes
return void
followed by an expression (for example, a function call) - it executes
return
followed by any other expression which evaluates toundefined
If any code paths in a function return a value explicitly but some code path do not return a value explicitly, it might be a typing mistake, especially in a large function. In the following example:
- a code path through the function returns a Boolean value
true
- another code path does not return a value explicitly, therefore returns
undefined
implicitly
function doSomething(condition) {
if (condition) {
return true;
} else {
return;
}
}
Rule Details
This rule requires return
statements to either always or never specify values. This rule ignores function definitions where the name begins with an uppercase letter, because constructors (when invoked with the new
operator) return the instantiated object implicitly if they do not return another object explicitly.
Examples of incorrect code for this rule:
/*eslint consistent-return: "error"*/
function doSomething(condition) {
if (condition) {
return true;
} else {
return;
}
}
function doSomething(condition) {
if (condition) {
return true;
}
}
Examples of correct code for this rule:
/*eslint consistent-return: "error"*/
function doSomething(condition) {
if (condition) {
return true;
} else {
return false;
}
}
function Foo() {
if (!(this instanceof Foo)) {
return new Foo();
}
this.a = 0;
}
Options
This rule has an object option:
-
"treatUndefinedAsUnspecified": false
(default) always either specify values or returnundefined
implicitly only. -
"treatUndefinedAsUnspecified": true
always either specify values or returnundefined
explicitly or implicitly.
treatUndefinedAsUnspecified
Examples of incorrect code for this rule with the default { "treatUndefinedAsUnspecified": false }
option:
/*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": false }]*/
function foo(callback) {
if (callback) {
return void callback();
}
// no return statement
}
function bar(condition) {
if (condition) {
return undefined;
}
// no return statement
}
Examples of incorrect code for this rule with the { "treatUndefinedAsUnspecified": true }
option:
/*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": true }]*/
function foo(callback) {
if (callback) {
return void callback();
}
return true;
}
function bar(condition) {
if (condition) {
return undefined;
}
return true;
}
Examples of correct code for this rule with the { "treatUndefinedAsUnspecified": true }
option:
/*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": true }]*/
function foo(callback) {
if (callback) {
return void callback();
}
// no return statement
}
function bar(condition) {
if (condition) {
return undefined;
}
// no return statement
}
When Not To Use It
If you want to allow functions to have different return
behavior depending on code branching, then it is safe to disable this rule.
Source: http://eslint.org/docs/rules/
There should be no space before ']'. Open
const accessToken = (req.body && req.body.access_token) || req.headers[ 'access-token' ];
- Read upRead up
- Exclude checks
Disallow or enforce spaces inside of computed properties (computed-property-spacing)
While formatting preferences are very personal, a number of style guides require or disallow spaces between computed properties in the following situations:
/*eslint-env es6*/
var obj = { prop: "value" };
var a = "prop";
var x = obj[a]; // computed property in object member expression
var a = "prop";
var obj = {
[a]: "value" // computed property key in object literal (ECMAScript 6)
};
Rule Details
This rule enforces consistent spacing inside computed property brackets.
It either requires or disallows spaces between the brackets and the values inside of them. This rule does not apply to brackets that are separated from the adjacent value by a newline.
Options
This rule has a string option:
-
"never"
(default) disallows spaces inside computed property brackets -
"always"
requires one or more spaces inside computed property brackets
never
Examples of incorrect code for this rule with the default "never"
option:
/*eslint computed-property-spacing: ["error", "never"]*/
/*eslint-env es6*/
obj[foo ]
obj[ 'foo']
var x = {[ b ]: a}
obj[foo[ bar ]]
Examples of correct code for this rule with the default "never"
option:
/*eslint computed-property-spacing: ["error", "never"]*/
/*eslint-env es6*/
obj[foo]
obj['foo']
var x = {[b]: a}
obj[foo[bar]]
always
Examples of incorrect code for this rule with the "always"
option:
/*eslint computed-property-spacing: ["error", "always"]*/
/*eslint-env es6*/
obj[foo]
var x = {[b]: a}
obj[ foo]
obj['foo' ]
obj[foo[ bar ]]
var x = {[ b]: a}
Examples of correct code for this rule with the "always"
option:
/*eslint computed-property-spacing: ["error", "always"]*/
/*eslint-env es6*/
obj[ foo ]
obj[ 'foo' ]
var x = {[ b ]: a}
obj[ foo[ bar ] ]
When Not To Use It
You can turn this rule off if you are not concerned with the consistency of computed properties.
Related Rules
- [array-bracket-spacing](array-bracket-spacing.md)
- [comma-spacing](comma-spacing.md)
- [space-in-parens](space-in-parens.md) Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
if (req.method === 'OPTIONS' || process.env.NODE_ENV === 'test') {
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
return res.status(401).json({ status: 401, message: 'UnauthÂorized' });
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
return res.json({ status: 200, message: 'success' });
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
});
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
return res.status(validationResult.statusCode).json({ status: validationResult.statusCode, message: validationResult.message });
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Expected space(s) after "if". Open
if(process.env.NODE_ENV !== 'test') {
- Read upRead up
- Exclude checks
enforce consistent spacing before and after keywords (keyword-spacing)
Keywords are syntax elements of JavaScript, such as function
and if
.
These identifiers have special meaning to the language and so often appear in a different color in code editors.
As an important part of the language, style guides often refer to the spacing that should be used around keywords.
For example, you might have a style guide that says keywords should be always surrounded by spaces, which would mean if-else
statements must look like this:
if (foo) {
// ...
} else {
// ...
}
Of course, you could also have a style guide that disallows spaces around keywords.
Rule Details
This rule enforces consistent spacing around keywords and keyword-like tokens: as
(in module declarations), async
(of async functions), await
(of await expressions), break
, case
, catch
, class
, const
, continue
, debugger
, default
, delete
, do
, else
, export
, extends
, finally
, for
, from
(in module declarations), function
, get
(of getters), if
, import
, in
, instanceof
, let
, new
, of
(in for-of statements), return
, set
(of setters), static
, super
, switch
, this
, throw
, try
, typeof
, var
, void
, while
, with
, and yield
. This rule is designed carefully not to conflict with other spacing rules: it does not apply to spacing where other rules report problems.
Options
This rule has an object option:
-
"before": true
(default) requires at least one space before keywords -
"before": false
disallows spaces before keywords -
"after": true
(default) requires at least one space after keywords -
"after": false
disallows spaces after keywords -
"overrides"
allows overriding spacing style for specified keywords
before
Examples of incorrect code for this rule with the default { "before": true }
option:
/*eslint keyword-spacing: ["error", { "before": true }]*/
if (foo) {
//...
}else if (bar) {
//...
}else {
//...
}
Examples of correct code for this rule with the default { "before": true }
option:
/*eslint keyword-spacing: ["error", { "before": true }]*/
/*eslint-env es6*/
if (foo) {
//...
} else if (bar) {
//...
} else {
//...
}
// no conflict with `array-bracket-spacing`
let a = [this];
let b = [function() {}];
// no conflict with `arrow-spacing`
let a = ()=> this.foo;
// no conflict with `block-spacing`
{function foo() {}}
// no conflict with `comma-spacing`
let a = [100,this.foo, this.bar];
// not conflict with `computed-property-spacing`
obj[this.foo] = 0;
// no conflict with `generator-star-spacing`
function *foo() {}
// no conflict with `key-spacing`
let obj = {
foo:function() {}
};
// no conflict with `object-curly-spacing`
let obj = {foo: this};
// no conflict with `semi-spacing`
let a = this;function foo() {}
// no conflict with `space-in-parens`
(function () {})();
// no conflict with `space-infix-ops`
if ("foo"in {foo: 0}) {}
if (10+this.foo<= this.bar) {}
// no conflict with `jsx-curly-spacing`
let a =
Examples of incorrect code for this rule with the { "before": false }
option:
/*eslint keyword-spacing: ["error", { "before": false }]*/
if (foo) {
//...
} else if (bar) {
//...
} else {
//...
}
Examples of correct code for this rule with the { "before": false }
option:
/*eslint keyword-spacing: ["error", { "before": false }]*/
if (foo) {
//...
}else if (bar) {
//...
}else {
//...
}
after
Examples of incorrect code for this rule with the default { "after": true }
option:
/*eslint keyword-spacing: ["error", { "after": true }]*/
if(foo) {
//...
} else if(bar) {
//...
} else{
//...
}
Examples of correct code for this rule with the default { "after": true }
option:
/*eslint keyword-spacing: ["error", { "after": true }]*/
if (foo) {
//...
} else if (bar) {
//...
} else {
//...
}
// not conflict with `array-bracket-spacing`
let a = [this];
// not conflict with `arrow-spacing`
let a = ()=> this.foo;
// not conflict with `comma-spacing`
let a = [100, this.foo, this.bar];
// not conflict with `computed-property-spacing`
obj[this.foo] = 0;
// not conflict with `generator-star-spacing`
function* foo() {}
// not conflict with `key-spacing`
let obj = {
foo:function() {}
};
// not conflict with `func-call-spacing`
class A {
constructor() {
super();
}
}
// not conflict with `object-curly-spacing`
let obj = {foo: this};
// not conflict with `semi-spacing`
let a = this;function foo() {}
// not conflict with `space-before-function-paren`
function() {}
// no conflict with `space-infix-ops`
if ("foo"in{foo: 0}) {}
if (10+this.foo<= this.bar) {}
// no conflict with `space-unary-ops`
function* foo(a) {
return yield+a;
}
// no conflict with `yield-star-spacing`
function* foo(a) {
return yield* a;
}
// no conflict with `jsx-curly-spacing`
let a =
Examples of incorrect code for this rule with the { "after": false }
option:
/*eslint keyword-spacing: ["error", { "after": false }]*/
if (foo) {
//...
} else if (bar) {
//...
} else {
//...
}
Examples of correct code for this rule with the { "after": false }
option:
/*eslint keyword-spacing: ["error", { "after": false }]*/
if(foo) {
//...
} else if(bar) {
//...
} else{
//...
}
overrides
Examples of correct code for this rule with the { "overrides": { "if": { "after": false }, "for": { "after": false }, "while": { "after": false } } }
option:
/*eslint keyword-spacing: ["error", { "overrides": {
"if": { "after": false },
"for": { "after": false },
"while": { "after": false }
} }]*/
if(foo) {
//...
} else if(bar) {
//...
} else {
//...
}
for(;;);
while(true) {
//...
}
When Not To Use It
If you don't want to enforce consistency on keyword spacing, then it's safe to disable this rule. Source: http://eslint.org/docs/rules/
Unexpected tab character. Open
const token = jsonWebToken.encode({ expires: expires, username: userObject.username, role: userObject.role }, settings.secret);
- Read upRead up
- Exclude checks
disallow all tabs (no-tabs)
Some style guides don't allow the use of tab characters at all, including within comments.
Rule Details
This rule looks for tabs anywhere inside a file: code, comments or anything else.
Examples of incorrect code for this rule:
var a /t= 2;
/**
* /t/t it's a test function
*/
function test(){}
var x = 1; // /t test
Examples of correct code for this rule:
var a = 2;
/**
* it's a test function
*/
function test(){}
var x = 1; // test
When Not To Use It
If you have established a standard where having tabs is fine.
Compatibility
- JSCS: disallowTabs Source: http://eslint.org/docs/rules/
Expected to return a value at the end of function. Open
module.exports.getToken = function(req, res) {
- Read upRead up
- Exclude checks
require return
statements to either always or never specify values (consistent-return)
Unlike statically-typed languages which enforce that a function returns a specified type of value, JavaScript allows different code paths in a function to return different types of values.
A confusing aspect of JavaScript is that a function returns undefined
if any of the following are true:
- it does not execute a
return
statement before it exits - it executes
return
which does not specify a value explicitly - it executes
return undefined
- it executes
return void
followed by an expression (for example, a function call) - it executes
return
followed by any other expression which evaluates toundefined
If any code paths in a function return a value explicitly but some code path do not return a value explicitly, it might be a typing mistake, especially in a large function. In the following example:
- a code path through the function returns a Boolean value
true
- another code path does not return a value explicitly, therefore returns
undefined
implicitly
function doSomething(condition) {
if (condition) {
return true;
} else {
return;
}
}
Rule Details
This rule requires return
statements to either always or never specify values. This rule ignores function definitions where the name begins with an uppercase letter, because constructors (when invoked with the new
operator) return the instantiated object implicitly if they do not return another object explicitly.
Examples of incorrect code for this rule:
/*eslint consistent-return: "error"*/
function doSomething(condition) {
if (condition) {
return true;
} else {
return;
}
}
function doSomething(condition) {
if (condition) {
return true;
}
}
Examples of correct code for this rule:
/*eslint consistent-return: "error"*/
function doSomething(condition) {
if (condition) {
return true;
} else {
return false;
}
}
function Foo() {
if (!(this instanceof Foo)) {
return new Foo();
}
this.a = 0;
}
Options
This rule has an object option:
-
"treatUndefinedAsUnspecified": false
(default) always either specify values or returnundefined
implicitly only. -
"treatUndefinedAsUnspecified": true
always either specify values or returnundefined
explicitly or implicitly.
treatUndefinedAsUnspecified
Examples of incorrect code for this rule with the default { "treatUndefinedAsUnspecified": false }
option:
/*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": false }]*/
function foo(callback) {
if (callback) {
return void callback();
}
// no return statement
}
function bar(condition) {
if (condition) {
return undefined;
}
// no return statement
}
Examples of incorrect code for this rule with the { "treatUndefinedAsUnspecified": true }
option:
/*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": true }]*/
function foo(callback) {
if (callback) {
return void callback();
}
return true;
}
function bar(condition) {
if (condition) {
return undefined;
}
return true;
}
Examples of correct code for this rule with the { "treatUndefinedAsUnspecified": true }
option:
/*eslint consistent-return: ["error", { "treatUndefinedAsUnspecified": true }]*/
function foo(callback) {
if (callback) {
return void callback();
}
// no return statement
}
function bar(condition) {
if (condition) {
return undefined;
}
// no return statement
}
When Not To Use It
If you want to allow functions to have different return
behavior depending on code branching, then it is safe to disable this rule.
Source: http://eslint.org/docs/rules/