동그란 도그린
[모던 자바스크립트 Deep Dive🦎] 7장 : 연산자 본문
📍 산술 연산자
- 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만듦
- 산술 연산이 불가능한 경우에는 NaN 반환
- 이항 산술 연산자
- 모든 이항 산술 연산자는 부수 효과(피연산자의 값을 변경) X
- 단항 산술 연산자
- 증가/감소(++/ --) 연산자는 부수 효과 O
- 숫자 타입이 아닌 피연산자에 +/- 단항 연산자를 사용하면 피연산자를 숫자 타입으로 변환한 값을 새로 생성해서 반환 ⇒ 부수 효과 X
var x = '1'; console.log(+x); // => 1 : 문자열을 숫자로 타입 변환 console.log(x); // => '1' : 부수 효과는 X x = 'Hello'; console.log(+x); // => NaN : 숫자로 타입 변환 불가능하므로 console.log(x); // => 'Hello' -true; // => -1 : 불리언 값을 숫자로 타입 변환 -'Hello' // => NaN : 숫자로 타입 변환 불가능하므로
- 문자열 연결 연산자
- 암묵적 타입 변환(타입 강제 변환)을 함 : 개발자의 의도와 관계 없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환
1 + true; // => 2 : true는 1로 타입 변환 됨 '1' + 2; // => '12' 1 + undefined; // => NaN
📍 할당 연산자
- 우항에 있는 피연산자의 평가 결과를 좌항의 변수에 할당
- 부수 효과 O (좌항의 변수에 값을 할당하므로)
- 할당문은 표현식인 문
var x;
console.log(x = 10); // => 10 : 할당문은 표현식인 문이므로
📍 비교 연산자
- 좌우항의 피연산자를 비교한 후 그 결과를 불리언 값으로 반환함
- 동등/일치 비교 연산자
- 동등 비교 연산자와 일치 비교 연산자는 비교하는 엄격성의 정도가 다름
- 동등 비교 연산자(==)는 좌우항의 피연산자를 비교하기 전 암묵적 타입 변환을 통해 타입을 일치시킨 뒤 값을 비교
0 === -0; // => true 0 == -0; // => true
- 🔅 양의 0(+0)과 음의 0(-0)을 비교하면 true 반환함
🔅 Object.is 메서드는 다음과 같이 정확한 비교 결과 반환함
Object.is(-0, +0); // => false
Object.is(NaN, NaN); // => true
📍 삼항 조건 연산자
조건식 ? 조건식이 true일 때의 반환 값 : 조건식이 false일 때의 반환 값 |
- 부수 효과 X
- 조건식의 평가 결과가 불리언 값이 아니면 불리언 값으로 암묵적 타입 변환
- 값으로 평가 가능한 표현식인 문
📍 논리 연산자
- 논리 부정 연산자(!)
- 피연산자가 불리언 값이 아니면 불리언 값으로 암묵적 타입 변환
!0; // => true !'Hello'; // => false
- 논리합( || ) 또는 논리곱( && ) 연산자
- 표현식의 평가 결과가 불리언 값이 아닐 수 있음
- 언제나 2개의 피연산자 중 어느 한쪽으로 평가됨
'Cat' && 'Dog'; // => 'Dog'
📍 쉼표 연산자( , )
- 왼쪽부터 차례로 피연산자를 평가하고 마지막 피연산자 평가가 끝나면 마지막 피연산자의 평가 결과를 반환
var x, y, z;
x = 1, y = 2, z = 3; // => 3
📍 그룹 연산자
- 소괄호( ‘()’ )로 피연산자를 감싸는 연산자
- 연산자 우선순위가 가장 높음
📍 typeof 연산자
- typeof 연산자가 반환하는 문자열은 7개의 데이터 타입과 정확히 일치하진 않음
- ‘null’을 반환하는 경우는 없으며, null은 ‘object’로 반환됨 ⇒ 값이 null 타입인지 확인할 때는 typeof 연산자 말고 일치 연산자(===) 사용할 것!
typeof null // => 'object'
var foo = null;
foo === null; // => true
- 선언하지 않은 식별자를 typeof 연산자로 연산하면 ReferenceError가 발생하지 않고 undefined 반환
📍 지수 연산자( ** )
- ES7에서 도입됨
- 이항 연산자 중에서 우선순위가 가장 높음
📍 연산자의 부수 효과
- 부수 효과 O : 할당 연산자(=), 증가/감소 연산자(++/--), delete 연산자
'FrontEnd > Javascript' 카테고리의 다른 글
[모던 자바스크립트 Deep Dive🦎] 9장 : 타입 변환과 단축 평가 (0) | 2023.04.06 |
---|---|
[모던 자바스크립트 Deep Dive🦎] 8장 : 제어문 (0) | 2023.03.29 |
[모던 자바스크립트 Deep Dive🦎] 6장 : 데이터 타입 (0) | 2023.03.24 |
[자바스크립트 완벽 가이드🦏] 4장 : 표현식과 연산자 (0) | 2023.03.22 |
[모던 자바스크립트 Deep Dive🦎] 5장 : 표현식과 문 (0) | 2023.03.22 |
Comments