연산자

정지훈·2020년 11월 24일
0

연산자는 하나이상의 표현식을 대상으로 산술 할당 비교 논리 타입 지수연산등을 수행해 하나의 값을 만든다.

1. 산술 연산자

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

1.1 이항 산술 연산자

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

학교에서 수학시간에 배운 덧셈 뺄셈 곱셈 나눗셈 나머지 이런 것들이다.
이것을 써도 부수 효과는 없다.

부수효과? 이건 무엇이냐면 연산자를 써서 기존 값이 바뀌는 것을 말한다. 이것의 경우 언제나 새로운 값을 만들 뿐이다.

1.2 단항 산술 연산자

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

증가: ++
감소: --
효과 없음: +
양수를 음수,음수를 양수: -

증가와 감소는 부수효과를 가지고 있다.

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

이것 처럼 x의 값이 변한다.

1.3 문자열 연결 연산자.

  • 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.
'1' + 2; // '12'
1+ '2'; // '12'

1 + 2; // 3
1 + true; // 2
1 + false; // 1
1 + null; // 1

+undefined; // NaN
1 + undefined; // NaN

위에 예제에서 주목할 점은 개발자 의도와는 상관 없이 자바스크립트 엔진에 의해 암묵적으로 타입 변환 되기도 한다.

보통 1 + true는 계산할 수 없다. 하지만 자바스크립트 엔진은 암묵적으로 true를 1로 타입을 강제로 변환한 후 연산을 수행한다.

2. 할당 연산자

할당 연산자는 우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당한다. 할당 연산자는 좌항의 변수에 값을 할당하므로 변수 값이 변하는 부수 효과가 있다.

3. 동등/일치 비교 연산자

동등 일치 비교 연산자는 좌항과 우항의 피연산자가 같은 값으로 평가 되는지 비교해 불리언 값을 반환한다.

이때 동등은 ==, != 이렇게 쓰고 일치는 ===, !== 이렇게 쓴다.
누군가는 == != 이게 =이걸 덜 쓰니까 좋은거 아닌가? 라고 생각 할 수 있다. 하지만 === !== 이것을 써야한다고 나는 생각한다.

그 이유는 == != 은 타입을 신경쓰지 않고 비교를 하기 때문이다.

만약 숫자 1과 문자열인 '1'을 비교한다고 하면 둘의 타입은 다르다 하지만 == 이것을 쓰면 true가 나올 것이다. 타입은 다르지만 암묵적 타입 변환을 통해 타입을 일치시키면 동등한 결과가 나오기 때문이다.

하지만 === 비교 연산자는 엄격하기 때문에 false가 나올 것이다.
즉 일치/불일치 비교 연산자를 사용하는 것이 개발자 의도에 맞게 될 것이다.

4. 논리 연산자

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

학교 기술 시간에 배운 그것이다.
OR,AND,NOT

OR연산자는 둘 중 하나가 true시 true인 값을 반환한다.
예를 들어 'cat' || '' 이면 true인 값인 cat을 반환한다.
둘다 true면 좌항에 있는 것이 먼저 반환이 된다.

AND 연산자는 모두 true시 우항에 있는 값을 반환한다.
만약 좌항이 false면 false값인 좌항을 반환하지만 둘다 true시에 좌항을 검사하고 우항을 검사하고 우항에 있는 값을 반환한다.

NOT 연산자는(부정) 언제나 불리언 값을 반환한다. 즉 암묵적으로 타입 변환이 이뤄난다. false면 true로 true면 false로 이것을 개발자가 의도대로 !! 를 쓰면 불리언값으로 쓰겠다는 것이다.

출저: https://poiemaweb.com/fastcampus/operator

0개의 댓글