Skip to content
← Back to rules

eslint/no-multi-assign 스타일

작동 방식

연쇄 할당 표현식의 사용을 금지합니다.

왜 문제가 될까요?

변수를 연쇄적으로 할당하면 예기치 못한 결과가 발생할 수 있으며, 코드를 읽기 어려워질 수 있습니다.

js
(function () {
  const foo = (bar = 0); // `foo = bar == 0`이 의도였는지 확인하세요?
  bar = 1; // `bar`가 상수 아니므로 이 코드는 실패하지 않습니다.
})();
console.log(bar); // `bar`가 스코프되지 않으므로 결과는 1이 출력됩니다.

예시

이 규칙에 맞지 않는 잘못된 코드 예시:

js
var a = (b = c = 5);

const foo = (bar = "baz");

let d = (e = f);

class Foo {
  a = (b = 10);
}

a = b = "quux";

이 규칙에 맞는 올바른 코드 예시:

js
var a = 5;
var b = 5;
var c = 5;

const foo = "baz";
const bar = "baz";

let d = c;
let e = c;

class Foo {
  a = 10;
  b = 10;
}

a = "quux";
b = "quux";

구성

이 규칙은 다음 속성을 가진 구성 객체를 수용합니다.

ignoreNonDeclaration

type: boolean

기본값: false

true로 설정되면, 변수 선언 또는 클래스 필드 초기화를 포함하지 않는 연쇄 할당을 허용합니다.

이 옵션이 true일 때 올바른 코드 예시:

js
let a;
let b;
a = b = "baz";

const x = {};
const y = {};
x.one = y.one = 1;

이 옵션이 true일 때 잘못된 코드 예시:

js
let a = (b = "baz");

const foo = (bar = 1);

class Foo {
  a = (b = 10);
}

사용 방법

이 규칙을 구성 파일 또는 명령줄 인터페이스에서 활성화하려면 다음을 사용할 수 있습니다:

json
{
  "rules": {
    "no-multi-assign": "error"
  }
}
bash
oxlint --deny no-multi-assign

참고 자료