Showing 176 of 242 total issues
Expected '===' and instead saw '=='. Open
const isProd = process.env.NODE_ENV == 'production'
- Read upRead up
- Exclude checks
Require === and !== (eqeqeq)
It is considered good practice to use the type-safe equality operators ===
and !==
instead of their regular counterparts ==
and !=
.
The reason for this is that ==
and !=
do type coercion which follows the rather obscure Abstract Equality Comparison Algorithm.
For instance, the following statements are all considered true
:
[] == false
[] == ![]
3 == "03"
If one of those occurs in an innocent-looking statement such as a == b
the actual problem is very difficult to spot.
Rule Details
This rule is aimed at eliminating the type-unsafe equality operators.
Examples of incorrect code for this rule:
/*eslint eqeqeq: "error"*/
if (x == 42) { }
if ("" == text) { }
if (obj.getStuff() != undefined) { }
The --fix
option on the command line automatically fixes some problems reported by this rule. A problem is only fixed if one of the operands is a typeof
expression, or if both operands are literals with the same type.
Options
always
The "always"
option (default) enforces the use of ===
and !==
in every situation (except when you opt-in to more specific handling of null
[see below]).
Examples of incorrect code for the "always"
option:
/*eslint eqeqeq: ["error", "always"]*/
a == b
foo == true
bananas != 1
value == undefined
typeof foo == 'undefined'
'hello' != 'world'
0 == 0
true == true
foo == null
Examples of correct code for the "always"
option:
/*eslint eqeqeq: ["error", "always"]*/
a === b
foo === true
bananas !== 1
value === undefined
typeof foo === 'undefined'
'hello' !== 'world'
0 === 0
true === true
foo === null
This rule optionally takes a second argument, which should be an object with the following supported properties:
-
"null"
: Customize how this rule treatsnull
literals. Possible values:-
always
(default) - Always use === or !==. -
never
- Never use === or !== withnull
. -
ignore
- Do not apply this rule tonull
.
-
smart
The "smart"
option enforces the use of ===
and !==
except for these cases:
- Comparing two literal values
- Evaluating the value of
typeof
- Comparing against
null
Examples of incorrect code for the "smart"
option:
/*eslint eqeqeq: ["error", "smart"]*/
// comparing two variables requires ===
a == b
// only one side is a literal
foo == true
bananas != 1
// comparing to undefined requires ===
value == undefined
Examples of correct code for the "smart"
option:
/*eslint eqeqeq: ["error", "smart"]*/
typeof foo == 'undefined'
'hello' != 'world'
0 == 0
true == true
foo == null
allow-null
Deprecated: Instead of using this option use "always" and pass a "null" option property with value "ignore". This will tell eslint to always enforce strict equality except when comparing with the null
literal.
["error", "always", {"null": "ignore"}]
When Not To Use It
If you don't want to enforce a style for using equality operators, then it's safe to disable this rule. Source: http://eslint.org/docs/rules/
Use of !important Open
box-shadow: none !important;
- Exclude checks
Expected '===' and instead saw '=='. Open
const isProd = process.env.NODE_ENV == 'production'
- Read upRead up
- Exclude checks
Require === and !== (eqeqeq)
It is considered good practice to use the type-safe equality operators ===
and !==
instead of their regular counterparts ==
and !=
.
The reason for this is that ==
and !=
do type coercion which follows the rather obscure Abstract Equality Comparison Algorithm.
For instance, the following statements are all considered true
:
[] == false
[] == ![]
3 == "03"
If one of those occurs in an innocent-looking statement such as a == b
the actual problem is very difficult to spot.
Rule Details
This rule is aimed at eliminating the type-unsafe equality operators.
Examples of incorrect code for this rule:
/*eslint eqeqeq: "error"*/
if (x == 42) { }
if ("" == text) { }
if (obj.getStuff() != undefined) { }
The --fix
option on the command line automatically fixes some problems reported by this rule. A problem is only fixed if one of the operands is a typeof
expression, or if both operands are literals with the same type.
Options
always
The "always"
option (default) enforces the use of ===
and !==
in every situation (except when you opt-in to more specific handling of null
[see below]).
Examples of incorrect code for the "always"
option:
/*eslint eqeqeq: ["error", "always"]*/
a == b
foo == true
bananas != 1
value == undefined
typeof foo == 'undefined'
'hello' != 'world'
0 == 0
true == true
foo == null
Examples of correct code for the "always"
option:
/*eslint eqeqeq: ["error", "always"]*/
a === b
foo === true
bananas !== 1
value === undefined
typeof foo === 'undefined'
'hello' !== 'world'
0 === 0
true === true
foo === null
This rule optionally takes a second argument, which should be an object with the following supported properties:
-
"null"
: Customize how this rule treatsnull
literals. Possible values:-
always
(default) - Always use === or !==. -
never
- Never use === or !== withnull
. -
ignore
- Do not apply this rule tonull
.
-
smart
The "smart"
option enforces the use of ===
and !==
except for these cases:
- Comparing two literal values
- Evaluating the value of
typeof
- Comparing against
null
Examples of incorrect code for the "smart"
option:
/*eslint eqeqeq: ["error", "smart"]*/
// comparing two variables requires ===
a == b
// only one side is a literal
foo == true
bananas != 1
// comparing to undefined requires ===
value == undefined
Examples of correct code for the "smart"
option:
/*eslint eqeqeq: ["error", "smart"]*/
typeof foo == 'undefined'
'hello' != 'world'
0 == 0
true == true
foo == null
allow-null
Deprecated: Instead of using this option use "always" and pass a "null" option property with value "ignore". This will tell eslint to always enforce strict equality except when comparing with the null
literal.
["error", "always", {"null": "ignore"}]
When Not To Use It
If you don't want to enforce a style for using equality operators, then it's safe to disable this rule. Source: http://eslint.org/docs/rules/
The object literal notation {} is preferrable. Open
const object = new Object()
- Read upRead up
- Exclude checks
disallow Object
constructors (no-new-object)
The Object
constructor is used to create new generic objects in JavaScript, such as:
var myObject = new Object();
However, this is no different from using the more concise object literal syntax:
var myObject = {};
For this reason, many prefer to always use the object literal syntax and never use the Object
constructor.
While there are no performance differences between the two approaches, the byte savings and conciseness of the object literal form is what has made it the de facto way of creating new objects.
Rule Details
This rule disallows Object
constructors.
Examples of incorrect code for this rule:
/*eslint no-new-object: "error"*/
var myObject = new Object();
var myObject = new Object;
Examples of correct code for this rule:
/*eslint no-new-object: "error"*/
var myObject = new CustomObject();
var myObject = {};
When Not To Use It
If you wish to allow the use of the Object
constructor, you can safely turn this rule off.
Related Rules
- [no-array-constructor](no-array-constructor.md)
- [no-new-wrappers](no-new-wrappers.md) Source: http://eslint.org/docs/rules/
Heading (h3) should not be qualified. Open
.endpoint .heading h3 {
- Exclude checks
Line should be indented 2 spaces, but was indented 4 spaces Open
display: block;
- Exclude checks
Unqualified attribute selectors are known to be slow. Open
.site .sandbox_header [type=submit] {
- Exclude checks
Use of !important Open
color: #fff !important;
- Exclude checks
Don't use IDs in selectors. Open
#api-key-current, .sandbox {
- Exclude checks
Line should be indented 0 spaces, but was indented 8 spaces Open
.accordion__arrow::before {
- Exclude checks
Heading (h2) should not be qualified. Open
.site .swagger-ui-wrap .resource .heading h2 {
- Exclude checks
Opening curly brace {
should be preceded by one space Open
.vl{
- Exclude checks
Line should be indented 2 spaces, but was indented 4 spaces Open
margin-right: 1.875rem;
- Exclude checks
Line should be indented 2 spaces, but was indented 4 spaces Open
padding-bottom: 12px;
- Exclude checks
Rule doesn't have all its properties in alphabetical order. Open
.site .sandbox_header [type=submit] {
- Exclude checks
Properties should be ordered animation, display Open
display: block;
- Exclude checks
Properties should be ordered border-left, padding-, padding-left Open
padding-left:10px; border-left: 1px solid #ccc; padding-:10px;
- Exclude checks
Properties should be ordered display, height, margin-top, position, right, top, width Open
position: relative;
- Exclude checks
Merge rule .jsonTable tr:nth-child(even)
with rule on line 36 Open
.jsonTable tr:nth-child(even){background-color: $white;}
- Exclude checks
Line should be indented 2 spaces, but was indented 4 spaces Open
100% {
- Exclude checks