# noAssignInExpressions (since v1.0.0)

**Diagnostic Category: lint/suspicious/noAssignInExpressions**

Sources:

- Inspired from:
`no-cond-assign`

Disallow assignments in expressions.

In expressions, it is common to mistype a comparison operator (such as `==`

) as an assignment operator (such as `=`

).
Moreover, the use of assignments in expressions is confusing.
Indeed, expressions are often considered as side-effect free.

## Examples

Section titled Examples### Invalid

Section titled Invalid```
code-block.ts:2:6 lint/suspicious/noAssignInExpressions ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```** ****✖** The **assignment** should not be in an **expression**.
**1 │ **let a, b;
** ****>** **2 │ **a = (b = 1) + 1;
** │ ** **^****^****^****^****^**
**3 │ **
** ****ℹ** The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.

```
code-block.ts:2:5 lint/suspicious/noAssignInExpressions ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```** ****✖** The **assignment** should not be in an **expression**.
**1 │ **let a;
** ****>** **2 │ **if (a = 1) {
** │ ** **^****^****^****^****^**
**3 │ **}
**4 │ **
** ****ℹ** The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.

```
code-block.ts:2:12 lint/suspicious/noAssignInExpressions ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```** ****✖** The **assignment** should not be in an **expression**.
**1 │ **function f(a) {
** ****>** **2 │ ** return a = 1;
** │ ** **^****^****^****^****^**
**3 │ **}
**4 │ **
** ****ℹ** The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.