JavaScript 'in' 연산자
JavaScript의 'in' 연산자는 객체의 속성을 확인하기 위한 연산자입니다.
정확히는 객체의 속성(property) 이름이 객체에 존재하는지 확인하는 것에 사용됩니다.
객체(Object) 뿐만 아니라 배열(Array)에서도 사용할 수 있어요!
배열(Array)인 경우 -> 인덱스(index)가 있는지를 확인합니다!
// property : 확인하려는 속성 이름(또는 index)
// object : 속성을 확인할 객체
property in object
- 객체(Object)가 가진 직접적인 속성(property) 뿐만 아니라 프로토타입 체인에 있는 속성도 확인합니다.
- 배열(Array)의 경우 해당 인덱스(index)가 존재하는지 확인할 수 있습니다.
예시
객체(Object)
const person = { name: 'Luca', age: 25 };
console.log('name' in person); // true
console.log('gender' in person); // false
배열(Array)
const arr = [1, 2, 3];
console.log(0 in arr); // true (인덱스 0이 있음)
console.log(5 in arr); // false (인덱스 5는 없음)
프로토타입 체인 - 속성 확인
const obj = { a: 1 };
console.log('toString' in obj); // true (Object.prototype에서 상속된 메서드)
하지만 여기서 생각을 해본다면 파이썬(Python)의 in 연산자와 비슷하다고 생각할 수 있다고 생각합니다.
JavaScript의 in 연산자와 Python의 in 연산자는 모두 어떤 특정 객체나 데이터 구조에 존재하는지 확인하는 용도로 사용됩니다.
하지만 위 두 언어에서의 동작 방식과 사용 목적에 약간의 차이가 있습니다. 여기서 두 연산자의 사용법과 차이점을 비교해 볼게요!
Python 'in' 연산자
Python의 in 연산자는 주로 리스트(List), 튜플(tuple), 문자열(" ", ' '), 딕셔너리(Dictionary) 등에서 특정 값(value)이나 키(key)가 존재하는지 확인하는 데 사용됩니다.
# value : 확인하려는 값
# collection : 리스트, 튜플 딕셔너리, 문자열 등
value in collection
- 리스트(List), 튜플(tuple), 문자열(" ", ' ')의 경우, in 연산자는 해당 값이 그 시퀀스(sequance)에 존재하는지 확인합니다.
- 딕셔너리(Dictionary)에서는 in 연산자가 키(key)가 존재하는지를 확인합니다.
예시
리스트(List)
arr = [1, 2, 3]
print(2 in arr) # True
print(5 in arr) # False
문자열
s = "hello"
print('h' in s) # True
print('z' in s) # False
딕셔너리(Dictionary)
person = {'name': 'Luca', 'age': 25}
print('name' in person) # True (키가 존재함)
print('Alice' in person) # False (값은 확인하지 않음, 오직 키만 확인)
차이점
JavaScript
1. in 연산자는 객체의 속성을 확인합니다. 배열의 인덱스도 속성으로 취급됩니다. 또한 프로토타입 체인을 따라 상속된 속성도 포함됩니다.
2. in 연산자는 프로토타입 체인을 통해 상속된 속성까지 확인합니다.
3. 객체에서 in 연산자를 사용하면 해당 속성의 이름이 객체에 존재하는지 확인합니다.
Python
1. in 연산자는 리스트, 튜플, 문자열, 딕셔너리 등에서 값을 확인합니다. 딕셔너리인 경우, 키만 확인합니다.
2. Python의 in 연산자는 오직 해당 컬렉션 안에 있는 실제 값이나 키를 확인하며, 클래스 상속 구조나 메서드에 대해 직접적인 확인은 하지 않습니다.
3. 딕셔너리에서 in 연산자는 해당 키가 존재하는지를 확인합니다.
'JavaScript > 이론 & 문법' 카테고리의 다른 글
JavaScript 옵셔널 체이닝 / Optional chaining (0) | 2024.10.21 |
---|---|
JavaScript 전개 구문과 구조 분해 할당 (0) | 2024.10.21 |
JavaScript for..in 과 for..of (iteration 문법) (0) | 2024.10.20 |
JavaScript 배열과 배열 생성 방법 / Array (0) | 2024.10.20 |
JavaScript 객체 생성 방법 / Objects (0) | 2024.10.19 |