연산자

ken6666·2024년 1월 11일
0

JS

목록 보기
4/39

연산자

산술 연산자

이항 산술 연산자

2개의 피연산자를 산술 연산하여 숫자 값을 만든다. 산술연산이 불가능할 경우 NaN을 반환한다

단항 산술 연산자

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

var x = 5, result;

// 선할당 후증가(postfix increment operator)
result = x++;
console.log(result, x); // 5 6

// 선증가 후할당(prefix increment operator)
result = ++x;
console.log(result, x); // 7 7

// 선할당 후감소(postfix decrement operator)
result = x--;
console.log(result, x); // 7 6

// 선감소 후할당 (prefix decrement operator)
result = --x;
console.log(result, x); // 5 5
// 아무런 효과가 없다.
+10;    // -> 10
+(-10); // -> -10

숫자 타입이 아닌 피연산자에 + 단항 연산자를 사용하면 피연산자를 숫자 타입으로 변환하여 반환한다.

+'123' => 123(숫자타입)

문자열 연결 연산자

// 문자열 연결 연산자
'1' + 2; // -> '12'
1 + '2'; // -> '12'

// 산술 연산자
1 + 2; // -> 3

// true는 1로 타입 변환된다.
1 + true; // -> 2

// false는 0으로 타입 변환된다.
1 + false; // -> 1

// null은 0으로 타입 변환된다.
1 + null; // -> 1

// undefined는 숫자로 타입 변환되지 않는다.
+undefined;    // -> NaN
1 + undefined; // -> NaN
  • 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다. 암묵적 타입 변환 적용.

할당 연산자

비교 연산자

동등/일치 비교 연산자

// 동등 비교
5 == 5; // -> true

// 타입은 다르지만 암묵적 타입 변환을 통해 타입을 일치시키면 동등하다.
5 == '5'; // -> true

동등비교(==) 연산자: 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치시킨 후 같은 값인지 비교한다.

일치 비교 연산자(===): 피연산자가 타입도 같고 값도 같은 경우에 한하여 true를 반환한다

// NaN은 자신과 일치하지 않는 유일한 값이다.
NaN === NaN; // -> false

대소 관계 비교 연산자

삼항 조건 연산자

var x = 2;

// 2 % 2는 0이고 0은 false로 암묵적 타입 변환된다.
var result = x % 2 ? '홀수' : '짝수';

console.log(result); // 짝수

삼항 조건 연산자 표현식은 값으로 평가할 수 있는 표현식인 문이다.

논리 연산자

typeof 연산자

typeof ''              // -> "string"
typeof 1               // -> "number"
typeof NaN             // -> "number"
typeof true            // -> "boolean"
typeof undefined       // -> "undefined"
typeof Symbol()        // -> "symbol"
typeof null            // -> "object"
typeof []              // -> "object"
typeof {}              // -> "object"
typeof new Date()      // -> "object"
typeof /test/gi        // -> "object"
typeof function () {}  // -> "function"

null 값은 null 값이 아닌 object로 반환된다. 자바스크립트의 버그

지수 연산자

2 ** 2;   // -> 4
2 ** 2.5; // -> 5.65685424949238
2 ** 0;   // -> 1
2 ** -2;  // -> 0.25

0개의 댓글