Javscript

[JavaScript] 자바스크립트 연산자(operator)

Wbeen 2023. 1. 11. 22:19

이번에는 자바스크립트 연산자에 대해 알아보겠습니다. 그중 산술, 할당, 문자열, 비교, 논리 연산자에 대해서만 알아보겠습니다.


 

 

 

산술 연산자

사칙연산에 사용되는 덧셈(+),뺄셈(-),곱셈(*),나눗셈(/) 그리고 나머지를 계산하는 %가 있습니다.

 

 

이때,

위와 같이 문자열로 표현된 숫자 역시 계산이 되지만 + 에 경우 계산이 안 되는 것을 볼 수 있습니다. 

 

+ 연산자에 경우 문자열과 사용될 경우 문자열을 연결해 주는 역할을 하게 됩니다.

 

 

 

문자열 연산자

+ 연산자는 피연사자 중 하나 이상이 문자열일 경우 문자열 연결 연산자로 동작합니다. 

첫 번째 연산(let a = 1 + "1")과 같이 + 연산자가 문자열과 함께 사용될 경우에는 숫자 1 을 문자열로 인식하여 연결해주는 동작을 합니다.

 

 

 

증감 연산자

증가연산자(++) , 감소연산자(--)가 있습니다.

증감 연산자는 위치에 따라 앞에 붙으면 전위증감연산자, 뒤에 붙으면 후위증감연산자라고 부릅니다.

첫번째 연산에 경우 

result에 a (= 1) 이 할당된 후 a가 1 증가하여 1 2라는 결과값이 나오는 것을 볼 수 있습니다.

 

두 번째 연산에 경우

result에  a가 1 증가된 후 (++a) 값이 할당되어 

result와 a에 값이 같은 것을 볼 수 있습니다.

 

 

 

 

 

 

 

할당 연산자

할당 연산자는 우항에 있는 피연산자의 결과값을 좌항에 있는 변수에 할당해 주는 역할을 합니다.

할당 연산자에는 =, += , -=, *=, /-, %= 이 있습니다.

코드 양을 줄이는데 도움이 됩니다.

 

 

 

 

 

 

 

비교 연산자

== (동등) , ===(일치) , !=(부동등) ,!==(불일치) , >(크다) , <(작다) , >= (크거나 같다) , <= (작거나 같다)가 있다.

 

대소 비교에 경우 수학에서 사용하는 것과 같이 양 변에 값을 비교할 때 사용됩니다.

우리는 == 과 === ,!= 와 !==에 차이점에 대해 알아봐야 하는데요.

뭔가 이상하지 않나요?

 

 

숫자 100과 문자열 "100" 이 동등(==) 하다고 나옵니다. 

그 이유는 동등 비교(==) 연산자는 좌항과 우항의 피연산자를 암묵적으로 타입 변환하여 타입을 일치시킨 후 값을 비교하기 때문인데요.

이럴 코딩 과정에서 예측하기 어려운 결과를 만들어내기 때문에 ==에 사용은 지양하는 것이 좋습니다.

 

== 연산자를 사용했을 때 예측하기 어려운 결과란 무엇일까요

a ('') 는 b (0) 과 같고 
b (0) 은 c ('0') 과 같으니 우리는 a('') 는 c('0')과 같다고 생각할 수 있습니다. 

하지만 결과는 어떨까요?

 

 

보시는 것과 같이 false가 됩니다.

 

 

이처럼 동등 비교 연산자(==)는 예측하기 어려운 결과를 만들어냅니다. 따라서 동등 비교 연산자는 사용하지 않는 편이 좋습니다.

대신 타입과 값을 함께 비교하고 결과를 예측하기 쉬운 일치 비교(===) 연산자를 사용해야 합니다.

 

 

 

삼항 조건 연산자

삼항 조건 연산자는  ( 조건 ? 참: 거짓)로 구성됩니다.

 

첫 번째 피연산자가 true이면 두 번째 피연산자를 반환하고 아니면 세 번째 피연산자를 반환합니다.

아래 식을 통해 쉽게 알아보겠습니다.

 

 

 

 

조건 a===2 가 ture를 반환하여 result 에는 "a는 2이다." 가 할당됩니다.

 

 

 

논리 연산자

|| (논리합) , && (논리곱) , !(부정) 이 있다.

 

&& 에 경우 

피연산자가 모두 true일 경우 true를 반환하고 이 외에는 false를 반환한다.

 

|| 에 경우

피연산자 중 하나라도 true일 경우 true를 반환하고 모두 false일 경우에만 

false 를 반환한다.

 

 

! 연산자는 언제나 불리언 값을 반환한다.

하지만 피연산자가 반드시 불리언 값일 필요는 없다.

 

 

 

 

 

논리 연산자에 경우 코드를 줄일 때도 사용되는데 

이는 추후에 단축 평가에 대해 설명할 때 자세히 설명하도록 하겠습니다.

단축평가에 대한 설명은 여기!