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