JS의 특징 - 연산자

Anyes·2021년 10월 31일
0

JS

목록 보기
5/6
post-thumbnail

1. 산술 연산자

피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자값을 만든다.
만약, 산술 연산이 불가능하다면 NaN을 반환.

1-1 이항 산술 연산자

+ 더하기 
- 빼기
* 곱하기
/ 나누기
% 나머지

1-2 단항 산술 연산자

++ 증가
-- 감소
+ 양수는 양수로 음수는 음수로 반환 +(10) +(-10)
- 양수는 음수로 음수는 양수로 반환 -(10) -(-10)

숫자타입이 아닌 피연산자에 단항 산술 연산자를 사용하면 피연산자를 숫자 타입으로 변환하여 반환한다.

var x = '1';
console.log(+x); //1
console.log(-x); //-1

x='Hello';
//문자열을 숫자로 타입 변환할 수 없으므로 NaN반환
console.log(+x);//NaN
console.log(++x);//NaN

1-3 문자열 연결 연산자

+연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.

2. 비교 연산자

== 동등 비교    x==y, x와 y의 값이 같음
=== 일치 비교   x===y, x와 y의 값과 타입이 같음
!= 부동등 비교   x!=y, x와 y의 값이 다름
!== 불일치 비교  x!==y, x와 y의 값과 타입이 다름

동등 비교

좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치시킨 후 같은 값인지 비교
좌항과 우항의 피연산자가 타입은 다르더라도 암묵적 타입 변환 후에 같은 값일 수 있다면 true를 반환

5 == 5; //true
5 == '5'; //true

일치 비교

좌항과 후앙의 피연산자가 타입도 같고 값도 같은 경우에 한해 true를 반환
암묵적 타입 변환을 하지 않는다!

5 === 5; //true
5 === '5'; //false

주의! 자바스크립트에선 양의0과 음의0이 존재한다. 이들을 비교하면 true를 반환

0 == -0;//true
0 === -0;//true

주의! NaN은 자신과 일치하지 않는 유일한 값이다.

NaN === NaN; //false

만약 숫자가 NaN인지 조사하려면 isNaN을 사용해야한다.

isNaN(NaN);//true

Object.is 메서드
ES6에서 도입된 메서드로 정확한 비교 결과를 반환한다. 그 외엔 ===와 동일하게 동작

-0 === +0 //true
Object.is(-0,+0); // false

NaN === NaN; //false
Object.is(NaN,NaN); // true

부동등 비교연산자(!=)와 불일치 비교 연산자(!==)는 각각 동등 비교 연산자(==)와 일치 비교 연산자(===)의 반대 개념이다.

3. 삼항 조건 연산자

조건식 ? 조건식이 true일 때 반환할 값 : 조건식이 false일 때 반환할 값

var result = score >= 60 ? 'pass' : 'fail';

4. typeof 연산자

typeof '' //string
typeof 1 //number
typeof NaN //number
typeof true //boolean 
typeof undefined //undefined
typeof Symbol() //symbol
typeof null //object
typeof [] //object
typeof {} //object
typeof new Date() //object
typeof /test/gi //object
typeof function () {} //function

null 값은 자바스크립트 버그로 인해 null이 아닌 object를 반환한다.
따라서 null 타입을 확인할때는 typeof 연산자 말고 일치 연산자(===)를 사용하자.

var foo = null;

typeof foo == null; //false
foo === null; //true

5. 지수 연산자

ES7에서 도입된 지수 연산자는 ** 를 사용한다.

//ES7
2 ** 4 //16
2 ** 2 ** 2//16
(-5) ** 2 //음수는 괄호로 묶어야 한다.
//ES7 이전
Math.pow(2,4) //4
Math.pow(Math.pow(2,2),2);//16
profile
코딩 공부 - 배운 것 정리 및 프론트엔드 준비

0개의 댓글