eslint/no-constant-binary-expression 정확성
작동 방식
값에 영향을 주지 않는 연산이 포함된 표현식을 금지합니다.
왜 문제인가요?
항상 참 또는 거짓으로 평가되는 비교 및 항상 단축 평가되거나 결코 단축 평가되지 않는 논리적 표현식(||, &&, ??)은 프로그래머의 오류를 시사할 가능성이 큽니다.
이러한 오류는 연산자 우선순위를 잘못 판단하기 쉬운 복잡한 표현식에서 특히 흔합니다.
또한 이 규칙은 새로 생성된 객체/배열/함수 등의 값과의 비교를 감지합니다.
자바스크립트에서는 객체가 참조로 비교되기 때문에, 새로 생성된 객체는 어떤 다른 값과도 ===일 수 없습니다.
값으로 객체를 비교하는 언어에서 온 프로그래머에게는 이는 놀라운 결과일 수 있습니다.
예시
이 규칙에 부적절한 코드 예시:
javascript
// 누군가는 이 식이 `a + (b ?? c)`로 평가될 것이라 생각할 수 있지만:
const x = a + b ?? c;
// 실제로는 `(a + b) ?? c`로 평가됩니다. `a + b`는 절대 null이 될 수 없기 때문에,
// `?? c`는 아무런 영향을 미치지 않습니다.
// 값으로 객체를 비교하는 언어에서 온 프로그래머는 이 코드가 작동할 것으로 기대할 수 있지만:
const isEmpty = x === [];
// 그러나 이 경우 `isEmpty`는 항상 `false`가 됩니다.이 규칙에 적절한 코드 예시:
javascript
const x = a + (b ?? c);
const isEmpty = x.length === 0;사용 방법
구성 파일 또는 명령줄 인터페이스에서 이 규칙을 활성화하려면 다음을 사용할 수 있습니다:
json
{
"rules": {
"no-constant-binary-expression": "error"
}
}bash
oxlint --deny no-constant-binary-expression