3. 자바스크립트 데이터 타입과 연산자 #7 연산자
2021. 7. 21. 16:15ㆍJavaScript/basic
본 글은 인사이드 자바스크립트 도서의 내용을 복습하기 위해서 작성된 글입니다.
3.7 연산자
자바스크립트 연산자의 대부분은 다른 언어와 유사하다. 자바스크립트에서 주의해야 할 연산자는 대표적으로 아래와 같다.
- + 연산자
- typeof 연산자
- ==(동등) 연산자, ===(일치) 연산자
- !! 연산자
3.7.1 + 연산자
+ 연산자는 더하기 연산과 문자열 연결 연산을 수행한다. 아래 예제와 같이 두 연산자가 모두 숫자일 경우에만 더하기 연산이 수행되고 나머지는 문자열 연결 연산이 이루어진다.
let add1 = 1+2;
let add2 = "my" + "string";
let add3 = 1 + "string";
let add4 = "string" + 2;
console.log(add1); // 3
console.log(add2); // mystring
console.log(add3); // 1string
console.log(add4); // string2
3.7.2 typeof 연산자
typeof 연산자는 피연산자의 타입을 문자열 형태로 리턴한다. 여기서 null과 배열이 'object'라는 점, 함수는 'function'이라는 점에 유의해야 한다.
각 타입별 typeof 연산자 결과
기본 타입 | 숫자 | 'number' |
기본 타입 | 문자열 | 'string' |
기본 타입 | 불린값 | 'boolean' |
기본 타입 | null | 'object' |
기본 타입 | undefined | 'undefined' |
참조 타입 | 객체 | 'object' |
참조 타입 | 배열 | 'object' |
참조 타입 | 함수 | 'function' |
3.7.3 ==(동등) 연산자와 ===(일치) 연산자
자바스크립트에서는 두 값이 동일한지를 확인하는 데, 두 연산자를 모두 사용할 수 있다.
- ==(동등) 연산자 : 비교하려는 피연산자의 타입이 다를 경우에 타입 변환을 거친 다음 비교
- ===(일치) 연산자 : 피연산자의 타입이 다를 경우에 타입을 변경하지 않고 비교한다.
==(동등) 연산자와 ===(일치) 연산자의 차이점
console.log(1=='1'); // true
console.log(1==='1'); // false
==(동등) 연산자의 경우는 두 피 연산자의 타입이 다르므로 숫자를 문자열로 변환하여 비교한다. 따라서 두 값이 같다고 판단해서 true가 반환된다.
반면 ===(일치) 연산자는 두 피연산자가 타입이 다르므로 그대로 false가 출력된다. 자바스크립트 코딩 가이드에서는 ===(동등) 연산자를 사용하는 것을 권한다.
3.7.4 !! 연산자
!! 연산자의 역할은 피연산자를 불린값으로 변환하는 것이다.
!! 연산자 활용을 통한 불린 값 변환
console.log(!!0); // false
console.log(!!1); // true
console.log(!!"string"); // true
console.log(!!''); // false
console.log(!!true); // true
console.log(!!false); // false
console.log(!!null); // false
console.log(!!undefined); // false
console.log(!!{}); // true, 객체가 빈 객체라도 true
console.log(!![1,2,3]); // true
References
인사이드 자바스크립트, 송형주 저
'JavaScript > basic' 카테고리의 다른 글
4. 함수와 프로토타입 체이닝 #2 함수 객체 : 함수도 객체다 (0) | 2021.07.22 |
---|---|
4. 함수와 프로토타입 체이닝 #1 함수 정의 (0) | 2021.07.22 |
3. 자바스크립트 데이터 타입과 연산자 #6 기본 타입과 표준 메서드 (0) | 2021.07.21 |
3. 자바스크립트 데이터 타입과 연산자 #5 배열 (0) | 2021.07.21 |
3. 자바스크립트 데이터 타입과 연산자 #4 프로토타입 (0) | 2021.07.21 |