-
[JS] 자바스크립트, 연산자 정리 (산술/할당/비교/논리 연산자)Frontend 2019. 4. 11. 23:23
1. 기초 산술연산자
분류 연산자 이름 기호 설명 사칙 연산자 더하기 + 두 값을 더한다. 빼기 - 앞의 값에서 뒤의 값을 뺀다. 곱하기 * 두 값을 곱한다. 나누기 / 앞의 값을 뒤의 값으로 나눈다. 나머지 연산자 나머지 % 앞의 값을 뒤의 값으로 나눈 나머지 값 증감 연산자 증가 ++ 변수의 값을 1 증가 감소 -- 변수의 값을 1 감소 # 증감연산자의 위치
- 증감연산자가 피연산자 앞에 위치
- ex) ++a
- 전체 수식 처리하기 전에 적용됨
- 증감연산자가 피연산자 뒤에 위치
- ex) a++
- 전체 수식의 처리가 끝난 뒤 적용됨
var a = 10; var b = a++ + 5; console.log(a, b); // a = 11, b = 15가 출력됨 var a = 10; var b = ++a + 5; console.log(a, b); // a = 11, b = 16이 출력됨
첫번째 경우는 b = a++ + 5 에서 ++가 a 뒤에 위치하니까 a+5를 먼저 계산해서 b에 15를 할당한다.
그리고 다음줄로 넘어가면서 a++가 계산되어 a = 11, b = 15가 출력된다.
두번째 경우는 ++a를 만나자마자 바로 a = 11이 된다.
그렇기 때문에 ++a + 5 = 11 + 5 = 16이 되어 b = 16이 된다.
2. 할당 연산자 응용
할당 연산자 응용 예 의미 += y += x y = y + x -= y -= x y = y - x *= y *= x y = y * x /= y /= x y = y / x %= y %= x y = y % x 3. String type과 Number type의 연산
# 더하기
number타입의 숫자와 string타입의 숫자를 더하는 경우
무조건 string타입이 우선하여 연산된다.
즉, 문자열처럼 결합되고 string으로 출력된다.
var a = 500; var b = "200"; console.log(a+b); // "500200" 출력
# 빼기 / 곱하기 / 나누기
빼기, 곱하기, 나누기 연산에서는 string타입의 숫자도
number타입인 것 처럼 연산이 된다.
그치만 헷갈려서 오류가 발생할 수 있으므로
되도록이면 숫자 타입으로 변환해서 연산하도록 한다.
var a = 500; var b = "200"; console.log(a-b); // 300 출력 console.log(a*b); // 100000 출력 console.log(a/b); // 2.5 출력
4. 비교연산자
비교연산자 설명 x == y x와 y의 값이 같다 x === y x와 y의 값과 타입(type)이 같다 x != y x와 y의 값이 다르다 x !== y x와 y의 값이나 타입(type)이 다르다 x > y x의 값이 y의 값보다 크다 x >= y x의 값이 y의 값보다 크거나 같다 x < y x의 값이 y의 값보다 작다 x <= y x의 값이 y의 값보다 작거나 같다 5. 논리 연산자
# OR 연산자 (기호: || )
- 왼쪽과 오른쪽 중 하나라도 참이면 모두 true
- 왼쪽과 오른쪽 모두 거짓일 때 false
# AND 연산자 (기호: && )
- 왼쪽과 오른쪽 중 하나라도 거짓이면 모두 false
- 왼쪽과 오른쪽 모두 참이어야 true
# NOT 연산자 (기호: ! )
- true나 false를 반대로 뒤집는다
# 논리 연산자의 쇼트 서킷:
- OR 연산자를 사용하여 조건식을 세웠을 경우, 왼쪽 항이 참이면 오른쪽 항을 검사하지 않고 true가 된다.
- AND 연산자를 사용하여 조건식을 세웠을 경우, 왼쪽 항이 거짓이면 오른쪽 항을 검사하지 않고 false가 된다.
var a = 1; var b = 2; var c = 3; if (a == 1 || c == ++b) { console.log('둘 중에 하나는 참', b) // b => 2 출력 } else { console.log('둘 다 거짓', b) } if (c == ++b && c == b++) { console.log('둘 다 참', b) // b => 4 출력 } else { console.log('둘 중에 하나는 거짓', b) }
(첫 번째 if문 연산과정)
- a == 1 → true임을 판별한다.
- OR연산이므로 둘 중에 하나만 true이면 true이다. 즉, 오른쪽 c == ++b는 연산하지 않고 true로 빠진다.
- console에 둘 중에 하나는 참 2 가 출력된다. (++b가 연산되지 않았으므로)
(두 번째 if문 연산과정)
- ++b를 만나는 순간 b = 3이 된다. c == ++b는 true가 된다.
- AND 연산이므로 두 항이 모두 참이어야 참이 된다. 그러므로 오른쪽 조건도 판별해야한다.
- c == b++에서 ++는 b의 뒤에 있으므로 나중에 연산된다. c == 3이므로 true가 된다.
- 위에서 조건 판별을 하고 아래로 내려오는 순간 b++가 계산되어 b = 4가 된다.
- console에 둘 다 참 4 가 출력된다.
6. 연산자 계산 순서
단항 연산자( !, ++, --) → 산술 연산자 → 비교 연산자 → 논리 연산자 → 할당 연산자
반응형'Frontend' 카테고리의 다른 글
[JS] 자바스크립트, 가장 기초적인 조건문 정리 (if문/if-else문/삼항연산자/switch문) (0) 2019.04.12 [JS/연산자] 자바스크립트로 "나이 계산기 / 할인 가격 계산기" 구현해보기 (2) 2019.04.12 [jQuery] 스크롤이 몇 퍼센트 움직였는지 구하는 방법 (0) 2019.04.04 [JS/DOM] 바닐라 자바스크립트로 스톱워치(STOP WATCH)구현하기 (10) 2019.04.04 [JS/DOM] 바닐라 자바스크립트로 전자시계 구현하기 (날짜/시간 출력) (5) 2019.04.02 COMMENT
- 증감연산자가 피연산자 앞에 위치