Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 객체 속성 존재 여부를 확인하는 'not in' 연산자가 있나요?

JavaScript에는 'not in' 연산자가 없습니다

JavaScript에는 Python과 달리 'not in'이라는 전용 연산자가 존재하지 않습니다. 하지만 걱정할 필요는 없습니다. in 연산자 앞에 논리 부정 연산자인 !(NOT)를 붙이면 완전히 동일한 효과를 낼 수 있습니다.

논리 부정 연산자(!) 활용하기

특정 속성이 객체에 존재하지 않는 경우만 처리하고 싶다면, 아래 코드처럼 조건문 전체를 괄호로 감싸고 앞에 !를 붙여주면 됩니다.

var arr = {};
if (!(id in arr)) {
   // arr 객체에 id 속성이 존재하지 않을 때 실행
}
else {
   // arr 객체에 id 속성이 존재할 때 실행
}

위 코드에서 !(id in arr)는 "id라는 속성이 arr 안에 없다"는 의미이므로, if 블록은 속성이 없을 때, else 블록은 속성이 있을 때 각각 실행됩니다.

hasOwnProperty() 메서드 사용하기

객체에 특정 속성이 직접 소유되어 있는지 확인하고 싶다면 hasOwnProperty() 메서드를 사용하는 것이 더 정확합니다. 이 메서드 역시 !와 함께 사용하면 '존재하지 않음'을 판별할 수 있습니다.

if (!arr.hasOwnProperty(id)) {
   // arr 객체가 id 속성을 직접 가지고 있지 않을 때 실행
}
else {
   // arr 객체가 id 속성을 직접 가지고 있을 때 실행
}

두 방식의 차이점: in 연산자는 프로토타입 체인(prototype chain)까지 모두 검사하는 반면, hasOwnProperty()는 해당 객체 자신이 직접 가진 속성만 확인합니다. 상속된 속성은 제외하고 순수하게 객체 자체의 속성만 검사해야 하는 경우라면 hasOwnProperty()를 사용하는 것이 안전합니다.