두번째 공부(개발공부)/JavaScript DeepDive

TIL ] 연산자 part.3 - 할당 연산자, 비교 연산자, 논리연산자

YTReeee 2023. 5. 14. 22:03

이어서 공부하는 연산자 part3 할당연산자!

할당연산자?

우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당한다. 우항의 값을 좌항의 변수에 값을 할 당하므로 변수값이 변하는 부수효과가 있다. - 출처 : 모던자바스크립트 DeepDive

 

수학에서 방정식을 배우다 보면 x = x +1 이런식의 표현을 보게 된다.

위 식을 자바스크립트 언어로 해석하면, =(등호) 좌측의 x는 변수가 된다.

그리고 =(등호) 우측의 x + 1 은 변수에 할당되는 값이 된다.

이때, 선언한 변수 x의 값이 변하기 때문에 부수효과(side effect)가 발생한다.

//변수 x에 1을 할당한다.
let x = 1;

//변수x를 출력한다.
console.log(x) // -> 1

//변수 x에 x+1을 재할당한다.
x = x + 1;

//변수 x를 출력한다.
console.log(x) // -> 2

//기존 선언에서 x = 1이었고, 새롭게 x + 1이 할당되었기 때문에 (x = 1) + 1 = 2가 되었다.

위와 같이 좌항에 변수 우항에 산술 계산이 있으면, 산술 계산된 값이 좌항의 변수의 값으로 할당되는 것이다.

 

할당연산자의 종류

할당연산자 동일표현 부수효과
= a = 10 a = 10 O
+= a += 10 a = a + 10 O
-= a -= 10 a = a - 10 O
*= a *= 10 a = a * 10 O
/= a /= 10 a = a / 10 O
%= a %= 10 a = a % 10 O

할당연산자와 산술연산자(문자열 활용)
동일값 연쇄 할당하기!


비교연산자?

좌항과 우항을 비교하여 true, false(참, 거짓 / 불리언 타입)으로 결과를 반환한다.

비교 연산자는 조건문과 반복문에서 많이 사용된다.

 

비교연산자 종류(수학에서의 등호와 부등호)

연산자 의미 예시 부수효과 비고
== 값만 같으면 'true' (동등 비교) 3 == '3' // true X 암묵적 타입 변환 o
=== 갑과 타입 모두 같아야 'true'(일치 비교) 3 === 3 // true X 암묵적 타입 변환 x
!= 값만 다르면 'true'(부동등 비교) 1 != 2 // true
1 != '1' // false
1 != 1 // false
X 암묵적 타입 변환 o
!== 값과 타입 모두 달라야 'true'(불일치 비교) 1 !== '2' // true
1 !== '1' // true
1 !== 1 // false
X 암묵적 타입 변환 x
> 좌항이 우항보다 크다 2 > 1 // true X  
< 우항이 좌항보다 크다 1 < 2 // true X  
>= 좌항이 우항보다 크거나 같다 5 >= 5 // true
5 >= '5' // true
5 >= 4+1 // true
5 >= '4+1' // false
X  
<= 우항이 좌항보다 크거나 같다 5 <= 5 // true X  

동등 비교의 경우, 값만 같은 경우에도 '참'을 반환하기 때문에 개발자가 의도하지 않는 작동이 발생할 수 있다.

이에 일치비교연산자 사용을 권장한다.


논리연산자?

논리연산자 예시 의미 부수효과
| | a > 1 || b > 2 논리합(OR) : 좌우항 하나만 true면 true 반환 X
&& a > 1 && b > 2 논리곱(AND) : 좌우항 모두 true여야 true 반환 X
! ! true // false 부정(NOT) : 무조건 불리언 값을 반환하며, 결과 값의 반대 값을 반환한다. X
예외 !0 // true
!'HI' // false
논리 부정(NOT)의 피연산자가 불리언 타입이 아니어도 상관없음
"HI" && "HELLO" // "HELLO"
"HI" || "HELLO" // "HI"
논리곱(&&)또는 논리합(||)의 결과가 반드시 불리언 값이 아닐 수도 있음

산술과 비교연산자의 경우 수학에서의 사칙연산과 부등식을 생각하면 될 것 같다.

할당 연산자의 경우, 방정식같으면서도 살짝 다르다.

[나의 닉네임] 이라는 것에 [용트리]라는 의미(값)을 부여해준다고 이해했다(♬너의 그 한마디 말도~).

이렇게 블로그에 정리하면서 드는 생각은....

우선, 장점은 평소에 잘 사용하지 않는 단어들(한국말인데도 한국말 같지 않은 느낌..)을 이해하는데 도움이 된다는 것이다.

다만.. 한장을 보는데 시간이 생각보다 많이 소요가 된다는 느낌이 있다.

그래도.. 정확히 이해를 하는 것이 추후 배울 내용들을 이해하는데 도움이 될 것 같아.. 더 좋은 방법이 생기기 전까지는 계속해서 정리를 해봐야하겠다!

일단.. 화이팅! ㅎ