Rules Reference

Rules in ESLint are grouped by type to help you understand their purpose. Each rule has emojis denoting:

Using the recommended config from @eslint/js in a configuration file enables this rule

Some problems reported by this rule are automatically fixable by the --fix command line option

Some problems reported by this rule are manually fixable by editor suggestions

Possible Problems

Enforce return statements in callbacks of array methods

💡 Suggestions

Require super() calls in constructors

Enforce “for” loop update clause moving the counter in the right direction

Enforce return statements in getters

Disallow using an async function as a Promise executor

Disallow await inside of loops

Disallow reassigning class members

Disallow comparing against -0

Disallow assignment operators in conditional expressions

Disallow reassigning const variables

Disallow expressions where the operation doesn’t affect the value

Disallow constant expressions in conditions

Disallow returning value from constructor

Disallow control characters in regular expressions

Disallow the use of debugger

Disallow duplicate arguments in function definitions

Disallow duplicate class members

Disallow duplicate conditions in if-else-if chains

Disallow duplicate keys in object literals

Disallow duplicate case labels

Disallow duplicate module imports

Disallow empty character classes in regular expressions

Disallow empty destructuring patterns

Disallow reassigning exceptions in catch clauses

Disallow fallthrough of case statements

Disallow reassigning function declarations

Disallow assigning to imported bindings

Disallow variable or function declarations in nested blocks

Disallow invalid regular expression strings in RegExp constructors

Disallow irregular whitespace

Disallow literal numbers that lose precision

Disallow characters which are made with multiple code points in character class syntax

Disallow new operators with global non-constructor functions

Disallow calling global object properties as functions

Disallow returning values from Promise executor functions

Disallow calling some Object.prototype methods directly on objects

Disallow assignments where both sides are exactly the same

Disallow comparisons where both sides are exactly the same

Disallow returning values from setters

Disallow sparse arrays

Disallow template literal placeholder syntax in regular strings

Disallow this / super before calling super() in constructors

Disallow the use of undeclared variables unless mentioned in /*global */ comments

Disallow confusing multiline expressions

Disallow unmodified loop conditions

Disallow unreachable code after return , throw , continue , and break statements

Disallow loops with a body that allows only one iteration

Disallow control flow statements in finally blocks

Disallow negating the left operand of relational operators

Disallow use of optional chaining in contexts where the undefined value is not allowed

Disallow unused private class members

Disallow unused variables

Disallow the use of variables before they are defined

Disallow variable assignments when the value is not used

Disallow useless backreferences in regular expressions

Disallow assignments that can lead to race conditions due to usage of await or yield

Require calls to isNaN() when checking for NaN

Enforce comparing typeof expressions against valid strings

Suggestions

Enforce getter and setter pairs in objects and classes

Require braces around arrow function bodies

Enforce the use of variables within the scope they are defined

Enforce camelcase naming convention

Enforce or disallow capitalization of the first letter of a comment

Enforce that class methods utilize this

Enforce a maximum cyclomatic complexity allowed in a program

Require return statements to either always or never specify values

Enforce consistent naming when capturing the current execution context

Enforce consistent brace style for all control statements

Require default cases in switch statements

Enforce default clauses in switch statements to be last

Enforce default parameters to be last

Enforce dot notation whenever possible

Require the use of === and !==

Require function names to match the name of the variable or property to which they are assigned

Require or disallow named function expressions

Enforce the consistent use of either function declarations or expressions assigned to variables

Require grouped accessor pairs in object literals and classes

Require for-in loops to include an if statement

Disallow specified identifiers

Enforce minimum and maximum identifier lengths

Require identifiers to match a specified regular expression

Require or disallow initialization in variable declarations

Require or disallow logical assignment operator shorthand

Enforce a maximum number of classes per file

Enforce a maximum depth that blocks can be nested

Enforce a maximum number of lines per file

Enforce a maximum number of lines of code in a function

Enforce a maximum depth that callbacks can be nested

Enforce a maximum number of parameters in function definitions

Enforce a maximum number of statements allowed in function blocks

Require constructor names to begin with a capital letter

Disallow the use of alert , confirm , and prompt

Disallow Array constructors

Disallow bitwise operators

Disallow the use of arguments.caller or arguments.callee

Disallow lexical declarations in case clauses

Disallow the use of console

Disallow continue statements

Disallow deleting variables

Disallow equal signs explicitly at the beginning of regular expressions

Disallow else blocks after return statements in if statements

Disallow empty block statements

Disallow empty functions

Disallow empty static blocks

Disallow null comparisons without type-checking operators

Disallow the use of eval()

Disallow extending native types

Disallow unnecessary calls to .bind()

Disallow unnecessary boolean casts

Disallow unnecessary labels

Disallow assignments to native objects or read-only global variables

Disallow shorthand type conversions

Disallow declarations in the global scope

Disallow the use of eval() -like methods

Disallow inline comments after code

Disallow use of this in contexts where the value of this is undefined

Disallow the use of the __iterator__ property

Disallow labels that share a name with a variable

Disallow labeled statements

Disallow unnecessary nested blocks

Disallow if statements as the only statement in else blocks

Disallow function declarations that contain unsafe references inside loop statements

Disallow magic numbers

Disallow use of chained assignment expressions

Disallow multiline strings

Disallow negated conditions

Disallow nested ternary expressions

Disallow new operators outside of assignments or comparisons

Disallow new operators with the Function object

Disallow new operators with the String , Number , and Boolean objects

Disallow \8 and \9 escape sequences in string literals

Disallow calls to the Object constructor without an argument

Disallow octal literals

Disallow octal escape sequences in string literals

Disallow reassigning function parameters

Disallow the unary operators ++ and --

Disallow the use of the __proto__ property

Disallow variable redeclaration

Disallow multiple spaces in regular expressions

Disallow specified names in exports

Disallow specified global variables

Disallow specified modules when loaded by import

Disallow certain properties on certain objects

Disallow specified syntax

Disallow assignment operators in return statements

Disallow javascript: urls

Disallow comma operators

Disallow variable declarations from shadowing variables declared in the outer scope

Disallow identifiers from shadowing restricted names

Disallow ternary operators

Disallow throwing literals as exceptions

Disallow initializing variables to undefined

Disallow the use of undefined as an identifier

Disallow dangling underscores in identifiers

Disallow ternary operators when simpler alternatives exist

Disallow unused expressions

Disallow unused labels

Disallow unnecessary calls to .call() and .apply()

Disallow unnecessary catch clauses

Disallow unnecessary computed property keys in objects and classes

Disallow unnecessary concatenation of literals or template literals

Disallow unnecessary constructors

Disallow unnecessary escape characters

Disallow renaming import, export, and destructured assignments to the same name

Disallow redundant return statements

Require let or const instead of var

Disallow void operators

Disallow specified warning terms in comments

Disallow with statements

Require or disallow method and property shorthand syntax for object literals

Enforce variables to be declared either together or separately in functions

Require or disallow assignment operator shorthand where possible

Require using arrow functions for callbacks

Require const declarations for variables that are never reassigned after declared

Require destructuring from arrays and/or objects

Disallow the use of Math.pow in favor of the ** operator

Enforce using named capture group in regular expression

Disallow parseInt() and Number.parseInt() in favor of binary, octal, and hexadecimal literals

Disallow use of Object.prototype.hasOwnProperty.call() and prefer use of Object.hasOwn()

Disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead

Require using Error objects as Promise rejection reasons

Disallow use of the RegExp constructor in favor of regular expression literals

Require rest parameters instead of arguments

Require spread operators instead of .apply()

Require template literals instead of string concatenation

Enforce the consistent use of the radix argument when using parseInt()

Disallow async functions which have no await expression

Enforce the use of u or v flag on RegExp

Require generator functions to contain yield

Enforce sorted import declarations within modules

Require object keys to be sorted

Require variables within the same declaration block to be sorted

Require or disallow strict mode directives

Require symbol descriptions

Require var declarations be placed at the top of their containing scope

Require or disallow “Yoda” conditions

Layout & Formatting

Require or disallow Unicode byte order mark (BOM)

array-bracket-newline deprecated

array-bracket-spacing deprecated

array-element-newline deprecated

arrow-parens deprecated

arrow-spacing deprecated

block-spacing deprecated

brace-style deprecated

callback-return deprecated

comma-dangle deprecated

comma-spacing deprecated

comma-style deprecated

computed-property-spacing deprecated

dot-location deprecated

eol-last deprecated

func-call-spacing deprecated

function-call-argument-newline deprecated

function-paren-newline deprecated

generator-star-spacing deprecated

global-require deprecated

handle-callback-err deprecated

id-blacklist deprecated

Replaced by id-denylist

implicit-arrow-linebreak deprecated

indent deprecated

indent-legacy deprecated

Replaced by indent

jsx-quotes deprecated

key-spacing deprecated

keyword-spacing deprecated

line-comment-position deprecated

linebreak-style deprecated

lines-around-comment deprecated

lines-around-directive deprecated

Replaced by padding-line-between-statements

lines-between-class-members deprecated

max-len deprecated

max-statements-per-line deprecated

multiline-comment-style deprecated

multiline-ternary deprecated

new-parens deprecated

newline-after-var deprecated

newline-before-return deprecated

newline-per-chained-call deprecated

no-buffer-constructor deprecated

no-catch-shadow deprecated

Replaced by no-shadow

no-confusing-arrow deprecated

no-extra-parens deprecated

no-extra-semi deprecated

no-floating-decimal deprecated

no-mixed-operators deprecated

no-mixed-requires deprecated

no-mixed-spaces-and-tabs deprecated

no-multi-spaces deprecated

no-multiple-empty-lines deprecated

no-native-reassign deprecated

Replaced by no-global-assign

no-negated-in-lhs deprecated

Replaced by no-unsafe-negation

no-new-object deprecated

Replaced by no-object-constructor

no-new-require deprecated

no-new-symbol deprecated

Replaced by no-new-native-nonconstructor

no-path-concat deprecated

no-process-env deprecated

no-process-exit deprecated

no-restricted-modules deprecated

no-return-await deprecated

no-spaced-func deprecated

Replaced by func-call-spacing

no-sync deprecated

no-tabs deprecated

no-trailing-spaces deprecated

no-whitespace-before-property deprecated

nonblock-statement-body-position deprecated

object-curly-newline deprecated

object-curly-spacing deprecated

object-property-newline deprecated

one-var-declaration-per-line deprecated

operator-linebreak deprecated

padded-blocks deprecated

padding-line-between-statements deprecated

prefer-reflect deprecated

quote-props deprecated

quotes deprecated

rest-spread-spacing deprecated

semi deprecated

semi-spacing deprecated

semi-style deprecated

space-before-blocks deprecated

space-before-function-paren deprecated

space-in-parens deprecated

space-infix-ops deprecated

space-unary-ops deprecated

spaced-comment deprecated

switch-colon-spacing deprecated

template-curly-spacing deprecated

template-tag-spacing deprecated

wrap-iife deprecated

wrap-regex deprecated

yield-star-spacing deprecated

generator-star removed

Replaced by generator-star-spacing

global-strict removed

Replaced by strict

no-arrow-condition removed

Replaced by no-confusing-arrow no-constant-condition

no-comma-dangle removed

Replaced by comma-dangle

no-empty-class removed

Replaced by no-empty-character-class

no-empty-label removed

Replaced by no-labels

no-extra-strict removed

no-reserved-keys removed

Replaced by quote-props

no-space-before-semi removed

Replaced by semi-spacing

no-wrap-func removed

Replaced by no-extra-parens

space-after-function-name removed

Replaced by space-before-function-paren

space-after-keywords removed

Replaced by keyword-spacing

space-before-function-parentheses removed

space-before-keywords removed

space-in-brackets removed

Replaced by object-curly-spacing array-bracket-spacing

space-return-throw-case removed

space-unary-word-ops removed

Replaced by space-unary-ops

spaced-line-comment removed

Replaced by spaced-comment

valid-jsdoc removed

Replaced by

require-jsdoc removed

require or disallow assignment operator shorthand where possible (operator-assignment)

The --fix option on the command line can automatically fix some of the problems reported by this rule.

JavaScript provides shorthand operators that combine variable assignment and some simple mathematical operations. For example, x = x + 4 can be shortened to x += 4 . The supported shorthand forms are as follows:

Rule Details

This rule requires or disallows assignment operator shorthand where possible.

The rule applies to the operators listed in the above table. It does not report the logical assignment operators &&= , ||= , and ??= because their short-circuiting behavior is different from the other assignment operators.

This rule has a single string option:

  • "always" (default) requires assignment operator shorthand where possible
  • "never" disallows assignment operator shorthand

Examples of incorrect code for this rule with the default "always" option:

Examples of correct code for this rule with the default "always" option:

Examples of incorrect code for this rule with the "never" option:

Examples of correct code for this rule with the "never" option:

When Not To Use It

Use of operator assignment shorthand is a stylistic choice. Leaving this rule turned off would allow developers to choose which style is more readable on a case-by-case basis.

This rule was introduced in ESLint 0.10.0.

  • Rule source
  • Documentation source

© OpenJS Foundation and other contributors Licensed under the MIT License. https://eslint.org/docs/rules/operator-assignment

IMAGES

  1. operator-assignment

    operator assignment eslint

  2. Operator assignment

    operator assignment eslint

  3. Assignment Operator in C Programming

    operator assignment eslint

  4. Eslint规范_eslint: expected an assignment or function call an-CSDN博客

    operator assignment eslint

  5. No nullish coalescing assignment operator · Issue #1624 · microsoft

    operator assignment eslint

  6. ESLint??

    operator assignment eslint

VIDEO

  1. python assignment operator

  2. #20. Assignment Operators in Java

  3. Assignment Operator in Python

  4. Assignment operator in R

  5. Become a Python Expert: Secrets and Guide of Assignment Operator

  6. Core