3.7 KiB
3.7 KiB
연산자와 표현식
자바스크립트에서 **연산자(Operator)**와 **표현식(Expression)**는 데이터를 처리하고 동작을 수행하는 기본 구성 요소입니다. 연산자는 값을 조작하거나 연산을 수행하는 기호이며, 표현식은 하나의 값으로 평가될 수 있는 코드입니다.
연산자
연산자는 특정 작업을 수행하기 위해 사용하는 기호나 키워드입니다. 자바스크립트의 연산자는 크게 다음과 같이 분류할 수 있습니다:
산술 연산자
숫자 데이터를 연산할 때 사용됩니다.
- 덧셈: +
- 뺄셈: -
- 곱셈: *
- 나눗셈: /
- 나머지: %
- 거듭제곱: **
- 증가: ++
- 감소: --
let x = 10;
let y = 5;
console.log(x + y); // 15
console.log(x - y); // 5
console.log(x * y); // 50
console.log(x / y); // 2
console.log(x % y); // 0
할당 연산자
변수에 값을 할당하거나 연산 결과를 저장할 때 사용합니다.
- 단순 할당: =
- 복합 할당: +=, -=, *=, /=, %=
let a = 10;
a += 5; // a = a + 5; 와 같음
console.log(a); // 15
비교 연산자
두 값을 비교하고 결과를 불리언 값(true 또는 false)으로 반환합니다.
- 같음: == (형 변환 후 비교), === (형 변환 없이 비교)
- 다름: !=, !==
- 크다: >
- 작다: <
- 크거나 같다: >=
- 작거나 같다: <=
let b = 10;
console.log(b == "10"); // true (형 변환 후 비교)
console.log(b === "10"); // false (형 변환 없이 비교)
논리 연산자
불리언 값을 조합하거나 조작할 때 사용됩니다.
- AND: &&
- OR: ||
- NOT: !
let c = true;
let d = false;
console.log(c && d); // false
console.log(c || d); // true
console.log(!c); // false
비트 연산자
&(AND) 두 비트가 모두 1일 때만 1을 반환합니다.|(OR)^(XOR) 두 비트가 다를 때 1을 반환합니다.~(NOT) 비트를 반전시킵니다. (0 -> 1, 1 -> 0)<<(왼쪽 시프트) 숫자를 왼쪽으로 특정 비트만큼 이동시킵니다. 빈 자리는 0으로 채워집니다.>>(오른쪽 시프트) 숫자를 오른쪽으로 특정 비트만큼 이동시킵니다. 부호가 유지됩니다.>>>(무부호 오른쪽 시프트)
조건부 연산자
조건에 따라 다른 값을 반환합니다.
let age = 20;
let result = age >= 18 ? "성인" : "미성년자";
console.log(result); // "성인"
문자열 연결 연산자
+는 숫자와 문자열을 연결하는 데도 사용됩니다.
- 문자열 연결: +
let str1 = "Hello";
let str2 = " World";
console.log(str1 + str2); // Hello World
typeof 연산자
데이터 타입을 반환합니다.
console.log(typeof 42); // "number"
console.log(typeof "Hello"); // "string"
delete 연산자
객체의 속성을 삭제합니다.
const obj = { name: "Alice", age: 25 };
delete obj.age;
console.log(obj); // { name: "Alice" }
spread 연산자 (...)
배열이나 객체를 펼칩니다.
const arr = [1, 2, 3];
const newArr = [...arr, 4];
console.log(newArr); // [1, 2, 3, 4]
연산자 우선순위
연산자는 각각 우선순위가 있으며, 우선순위가 높은 연산자가 먼저 계산됩니다.
괄호를 사용하여 연산 순서를 변경할 수 있습니다.
표현식
표현식은 하나의 값으로 평가될 수 있는 코드입니다.
- 리터럴 표현식: 값을 직접 나타냄
- 연산식: 연산자를 사용한 표현
- 함수 호출식: 함수의 결과를 반환
// 리터럴 표현식
10; // 숫자 리터럴
"Hello"; // 문자열 리터럴
// 연산식
5 + 10; // 15
x * 2; // x 값에 따라 달라짐
// 함수 호출식
Math.max(10, 20); // 20