Wanna be Brilliant Full-Stack Developer
'==' 와 '==='의 차이점 본문
'==' 와 '==='의 주된 차이점은 무엇인가?
JavaScript에서 `==`와 `===`는 비교 연산자로 사용됩니다.
주된 차이점은 동등성 비교 시 자료형 체크 여부입니다.
1. `==` (동등 연산자):
- 값만을 비교하며 자료형은 비교하지 않습니다.
- 자료형이 다르더라도 변환하여 값이 같으면 true를 반환합니다.
'' == null; // true (값이 비어있는 문자열은 null로 변환됨)
0 == false; // true (숫자 0은 불리언 false로 변환됨)
'5' == 5; // true (문자열 '5'는 숫자 5로 변환됨)
2. `===` (일치 연산자):
- 값과 자료형까지 엄격하게 비교합니다.
- 자료형이 다르면 무조건 false를 반환합니다.
'' === null; // false (빈 문자열은 문자열이므로 자료형이 다름)
0 === false; // false (숫자와 불리언은 자료형이 다름)
'5' === 5; // false (문자열과 숫자는 자료형이 다름)
따라서, `===`를 사용하면 값과 자료형이 완전히 일치하는 경우에만 true가 반환되므로 더 엄격한 비교가 이루어집니다.
이를 통해 예기치 않은 형변환으로 인한 오류를 방지할 수 있습니다. 일반적으로 `===`를 사용하는 것이 좋습니다.
`!=`와 `!==`는 각각 동등하지 않음과 엄격히 동등하지 않음을 나타내는 비교 연산자입니다.
1. `!=` (부등 연산자):
- 값만을 비교하며 자료형은 고려하지 않습니다.
- 값이 다르면 true를 반환합니다.
'' != null; // false (값이 비어있는 문자열은 null로 변환됨)
0 != false; // false (숫자 0은 불리언 false로 변환됨)
'5' != 5; // false (문자열 '5'는 숫자 5로 변환됨)
2. `!==` (일치하지 않는 연산자):
- 값과 자료형이 모두 일치하지 않아야 true를 반환합니다.
- 자료형이 다르거나 값이 다르면 true를 반환합니다.
'' !== null; // true (빈 문자열은 문자열이므로 자료형이 다름)
0 !== false; // true (숫자와 불리언은 자료형이 다름)
'5' !== 5; // true (문자열과 숫자는 자료형이 다름)
따라서, `!==`를 사용하면 값과 자료형이 모두 일치하지 않아야 true가 반환되므로 더 엄격한 부등호 비교가 이루어집니다. 이를 통해 예기치 않은 형변환으로 인한 오류를 방지할 수 있습니다.
하지만 자바에서는 != 연산자와 == 연산자가 있지만
둘다 값만 비교를 하고 자료형을 변환하여 비교는 하지 않는다.
Java에서 `==` 연산자는 기본 자료형(primitive types)의 경우 값 비교를 수행하며, 참조 자료형(reference types)의 경우 참조값 비교를 수행합니다. 자료형을 변환하지 않습니다.
1. **기본 자료형 (Primitive types):**
int a = 5;
int b = 5;
System.out.println(a == b); // true
기본 자료형은 값이 직접 비교되므로 값이 같으면 `true`를 반환합니다.
2. **참조 자료형 (Reference types):**
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1 == str2); // false
참조 자료형은 객체의 참조값을 비교하므로, 동일한 값을 가진 두 객체라도 `new` 키워드로 생성되면 다른 객체가 됩니다. 따라서 위의 예시에서는 `false`가 출력됩니다.
그러나 문자열(String)은 예외적으로 `==` 연산자를 사용하여 값 비교가 가능합니다. 이는 Java에서 문자열 리터럴이 상수 풀(Constant Pool)에 캐시되어 같은 문자열 리터럴을 공유하기 때문입니다.
String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1 == str2); // true
위의 코드에서는 `true`가 출력됩니다. 하지만 이는 문자열 리터럴에만 해당하며, `new String()`과 같이 명시적으로 객체를 생성하면 `==`로 비교할 때 주의가 필요합니다.
이런 경우에는 `equals()` 메서드를 사용하여 값을 비교하는 것이 권장됩니다.
'Some Memos > JQUERY & JAVASCRIPT' 카테고리의 다른 글
Jquery #7 jqgrid getRowData & addRowData , 'last' ? | Each, ForEach (0) | 2023.06.05 |
---|---|
JQUERY 및 JS 메모 (0) | 2023.03.28 |