[7장] 연산자

ssu00·2022년 1월 6일
0

7.1 산술 연산자

1) 이항 산술 연산자: +, -, *, /, %
2) 단항 산술 연산자: ++, --, +, -
3) 수학적 계산을 통해 새로운 숫자 값을 만드는 연산자이다.
4) 숫자 타입이 아닌 피연산자에 + 단항 연산자를 사용하면 피연산자를 숫자 타입으로 변환하여 반환한다.
5) 산술 연산이 불가능한 경우, NaN을 반환한다.

'1'+2; // -> '12'
1+'2'; // -> '12'
1+true; // -> true가 1로 타입 변환되므로, 2
1+false; // -> false가 0으로 타입 변환되므로, 1
1+null; // -> null이 0으로 타입 변환되므로, 1
undefined; // -> NaN 
1+undefined; // -> NaN. undefined는 숫자로 타입 변환되지 않는다. 

x=true, y='1', z='Hello';
console.log(+x, +y, +z); //1 1 NaN

위 코드에서 true가 1, false가 0, null이 0으로 타입 변환되는 것처럼 개발자의 의도와는 상관없이 타입이 자동으로 변환되기도 한다. 이를 암묵적 타입 변환, 타입 강제 변환이라고 한다.

7.2 할당 연산자

1) 할당 연산자: =, +=, -=, *=, /=, %=
2) 할당문은 값으로 평가되는 표현식인 문이다.
따라서, 여러 변수에 동일한 값을 연쇄 할당할 수 있다.

var a, b, c;
a = b = c = 0;

7.3 비교 연산자

1) 동등/일치 비교 연산자: ==, ===, !=, !==
2) 대소 관계 비교 연산자: <, >, <=, >=
3) ==와 !=은 에 대해서만 비교를 하고, ===와 !==은 값과 타입에 대해서 비교를 한다. ==와 != 연산자의 경우 값만 비교해야 하므로, 비교 전 암묵적 타입 변환을 통해 타입을 일치시킨 후 같은 값인지 비교한다.

5==5; //true
5===5; //true
5=='5'; //true
5==='5'; //false

4) NaN자신과 일치하지 않는 유일한 값이다. 따라서 숫자가 NaN인지 조사하려면 isNaN() 함수를 사용해야 한다.

NaN===NaN; //false

5) Object.is
Object.is 메소드는 ES6에서 도입되었다. 예측 가능한 정확한 비교 결과를 반환한다.

-0===+0; //true
NaN===NaN; //false
Object.is(-0,+0); //false
Object.is(NaN,NaN); //true

7.4 삼항 조건 연산자

1) 삼항 조건 연산자: (조건식 ? 조건식이 true일 때 반환값 : 조건식이 false일 때 반환값)

const value = true;
const result = value ? "value는 true입니다." : "value는 false입니다.";
console.log(result); //value는 true입니다.

2) 삼항 조건 연산자와 if...else문의 비교
삼항 조건 연산자 표현식은 값처럼 사용할 수 있지만, if...else문은 값처럼 사용할 수 없다.

7.5 논리 연산자

1) 논리 연산자: ||, &&, !
피연산자가 boolean 값이 아니면, boolean type으로 암묵적 타입 변환된다.

7.6 쉼표 연산자

1) 쉼표 연산자: ,
2) 쉼표 연산자는 왼쪽 피연산자부터 차례대로 피연산자를 평가하고 마지막 피연산자의 평가가 끝나면 마지막 피연산자의 평가 결과를 반환한다.

var x, y, z;
x=1, y=2, z=3; //3

7.7 그룹 연산자

1) 그룹 연산자: ()
2) 수학에서의 ( )와 의미가 같다. 연산자의 우선순위를 조절하는 역할을 한다.
3) 그룹 연산자는 연산자 우선순위가 가장 높다.

7.8 typeof 연산자

1) typeof 연산자: typeof
2) 피연산자의 데이터 타입을 문자열로 반환한다.
3) 피연산자의 데이터 타입 종류: "string", "number", "boolean", "undefined", "symbol", "object", "function"
4) "null"을 반환하는 경우는 없다.

typeof null; //object

7.9 지수 연산자

1) 지수 연산자: **
2) 좌항의 피연산자를 base로, 우항의 피연산자를 exponent로 거듭 제곱하여 숫자 값을 반환한다.
3) 지수 연산자는 이항 연산자 중 가장 우선순위가 높다.

2**0; //2의 0제곱 == 1
2**-2; //2의 -2제곱 == 0.25
2**2**2; //(2의 2제곱)의 2제곱 == 16

0개의 댓글