03. 연산자

HoonDong_K·2022년 6월 7일
0
post-thumbnail

연산자 (operator)는 하나 이상의 포현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 이용하여 하나의 값을 만든다.

피연산자 (operand)는 연산의 대상이며, 값으로 평가된다.

❗ 산술 연산자

산술 연산자 (arithmetic operator) 은 피연산자를 대상으로 수학적 계산을 통해 새로운 숫자 값을 만들며, 연산이 불가할 경우 NaN 을 반환한다.

❓이항 산술 연산자

이항 (binary) 산술 연산자는 2개의 피연산자를 연산하여 값을 만든다.

부수효과 (side effect)란 산술 연산을 통해 피연산자의 값이 바뀌는 경우를 말한다.

❓단항 산술 연산자

단항 (unary) 산술 연산자는 1개의 피연산자를 연산하여 값을 만든다.

증가 / 감소 연산자는 피연산자의 값이 변경되는 부수효과를 갖고 있다.

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

x 라는 피연산자의 값이 암묵적인 할당을 통해 변경된다.


증가/감소 연산자는 전위와 후위로 구분된다.


  • 전위 증가/감소 연산자 (prefix increment/decrement operator): 피연산자의 값을 증감 후, 연산을 수행한다.
var x = 1
var result = ++x
console.log(`result: ${result} , x : ${x}`)
var result = --x
console.log(`result: ${result} , x : ${x}`)

x 라는 변수에 1을 담은 후 전위 증가 연산자를 통해 result에 할당을 했을 경우, x 의 값이 먼저 증감이 된 후 result 에 증가된 x의 값이 할당된다.

마찬가지로 전위 감소 연산자 또한 x의 값이 먼저 감소되고, 감소된 x의 값이 result에 할당된다.

  • 후위 증가/감소 연산자 (postfix increment/decrement operator): 연산을 수행한 후, 피연산자의 값을 증감한다.
var x = 1;
var result = x++;
console.log(`result: ${result} / x : ${x}`);
result = x--;
console.log(`result: ${result} / x : ${x}`);

반대로 후위 증가 연산자를 사용할 경우, result에 x의 값이 먼저 할당된 후, x의 값이 증가되며, 마찬가지로 후위 감소 연산자의 경우 result에 x의 값이 먼저 할당된 후 x의 값이 감소된다.

❗ 할당 연산자

할당 연산자 (assignment operator)는 우항에 있는 피연산자의 결과 값을 좌항에 있는 변수에 할당한다.

❗ 비교 연산자

비교 연산자(comparison operator)는 좌항과 우항의 피연산자를 비교한 다음, boolean 값을 반환한다.

❓ 동등/일치 비교 연산자

동일 비교 (loose equality) 와 일치 비교 (strict equality) 연산자는 좌항과 우항의 값 비교에서 엄격성의 정도에 따라 구분된다.

console.log(`5 == 5 => ${5 == 5}`)
console.log(`5 == '5' => ${5 == '5'}`)
console.log(`5 === 5 => ${5 === 5}`)
console.log(`5 === '5' => ${5 === '5'}`)

만약 동일 비교를 사용하게 된다면 숫자 5 와 문자 5는 true의 값이 반환될 것이다. 하지만 엄격 비교를 사용한다면 데이터 타입이 일치하지 않기 때문에 false의 값이 반환된다.

동등 비교는 예측하기 어려운 결과를 만들어내기 때문에 일치 비교 연산자를 사용하는 것이 좋다.

❓ 대소 관계 비교 연산자

좌항과 우항 피연산자 값의 대소 관계를 비교한 후 boolean 값을 반환한다.

❗ 삼항 조건 연산자

삼항 조건 연산자 (ternary operator)는 조건식의 평가 결과에 따라 반환될 값을 결정한다.

조건식 ? true일 경우 반환값 : false일 경우 반환값

var score;

score=70;
var result = score >= 60 ? 'pass' : 'false';
console.log(`result : ${result}`);

score = 50;
result = score >= 60 ? 'pass' : 'false';
console.log(`result : ${result}`);

만약 score의 값이 60 이상일 경우 result 변수에 'pass'가 할당되고, 미만일 경우 'false'가 할당된다.

삼항 조건 연산자는 if..else 문과 비교될 수 있다. 두 문 모두 조건을 통해 값을 도출할 수 있다.

하지만 삼항 조건 연산자는 값처럼 쓰여, 반환을 통해 변수에 할당할 수 있지만 if...else 문은 값처럼 사용할 수 없다.

//삼항 조건 연산자
var result = score >= 60 ? 'pass' : 'false'
//if..else
var result = if (score>=60){'pass'} else {'false'}

하지만 조건의 수가 많아진다면 if..else문을 사용하는 것이 가독성에 더 좋다.

❗ 논리 연산자

논리 연산자 (logical operator) 는 우항과 좌항의 피연산자를 논리 연산한다.

true || true // ->true
true || false // ->true
false || true // ->true
false || false // ->false

true && true // ->true
true && false // ->false
false && true // ->false
false && false // ->false

!true // ->false
!false // ->true

|| -> 좌항과 우항 중 하나의 값이 true 면 true 반환
&& -> 좌항과 우항 모두 true 일 경우 true 반환
! -> 피연산자 값 반대 값 반환

❗ 연산자 우선 순위

❗ 연산자 결합 순서

profile
코드 한 줄이 나를 증명하는 개발자

0개의 댓글