[JavaScript] 표현식과 연산자

빵호·2022년 2월 27일
0

JavaScript

목록 보기
27/28
post-thumbnail

표현식

표현식(expression)은 값으로 평가될 수 있는 문이다.

let x;
x = 3 * 5;

두 번째 행에는 두 개의 표현식이 있다. 첫 번째 표현식은 3 * 5 곱셈 표현식이고 두번째 표현식은 결과 15를 변수 x에 할당하는 표현식이다.

연산자

표현식이 값이 되는 것이라면 연산자는 값을 만드는 행동이라는 뜻이다.

산술 연산자

자바스크립트에는 다음과 같은 산술 연산자가 있다.

  • + 덧셈(문자열 병합에도 쓰임)
  • - 뺄셈
  • / 나눗셈
  • * 곱셈
  • % 나머지
  • - 단항 부정 ex) -x // x의 부호를 바꿈 x가 5일 경우 -x는 -5
  • + 단항 플러스 x가 숫자가 아닐경우 숫자로 변환
  • ++ 전위 증가 ex) ++x // x에 1을 더한 다음 평가
  • ++ 후위 증가 ex) x++ // x를 평가한 다음 1을 더함
  • -- 전위 감소 ex) --x // x에 1을 뺀 다음 평가
  • -- 후위 감소 ex) x-- // x를 평가한 다음 1을 뺌

연산자 우선순위

연산자의 경우 수학에서의 연산자 우선순위와 똑같이 동작한다.

8 / 2 + 3 * (4 * 2 -1) // 25

위의 코드의 경우 괄호 - 곱셈 - 나눗셈 - 덧셈 - 뺄셈 순으로 계산이 된다.

비교 연산자

비교 연산자는 두 개의 값을 비교한다.

크게 비교 연산자는 일치함(strict equality ===), 동등함(loose equality ==), 대소 관계 세 가지 타입으로 나뉜다.

  • 일치 : 같은 객체를 가리키거나 같은 타입이고 같은 값을 가졌음
  • 동등 : 같은 객체를 가리키거나 같은 값을 갖도록 변환할 수 있음
const n = 5;
const s = "5";

n === s; // false 타입이 다름
n === Number(s); // true 문자열 "5"를 숫자로 5로 변환
n == s; // true 
n != s; // false 

const a = { name : "an object" };
const b = { name : "an object" };

a === b; // false 객체는 항상 다름
a == b; // false

논리 연산자

자바스크립트의 논리 연산자는 불리언이 아닌 값도 다룰 수 있지만 결과는 불리언 값뿐이다.

자바스크립트의 모든 데이터 타입은 참 같은 값과 거짓 같은 값을 나뉠 수 있고 해당 값은 다음과 같다.

  • 참 같은 값 : undefined, null, false, 0, NaN, 빈 문자열
  • 거짓 같은 값 : 모든 객체, 모든 배열, 공백, 문자열 "false", ..등등

AND, OR, NOT

자바스크립트가 지원하는 논리 연산자는 AND(&&), OR(||), NOT(!) 세 가지이다.

  • AND(&&) : 피연산자가 모두 true 일 때만 true
  • OR(||) : 피연산자 모두 false 일 때만 false
  • NOT(!) : 피연산자를 반대로 바꿈

typeof 연산자

typeof 연산자는 피연산자의 타입을 나타내는 문자열을 반환한다.

하지만 이 연산자는 자바스크립트의 일곱 가지 데이터 타입을 정확히 나타내지 못한다.

  • typeof undefined : "undefined"
  • typeof null : "object"
  • typeof {} : "object"
  • typeof true : "boolean"
  • typeof 1 : "number"
  • typeof "" : "string"
  • typeof Symbol() : "symbol"
  • typeof function() {} : "function"

할당 연산자

할당 연산자는 변수에 값을 할당한다.

등호의 왼쪽에 있는 것은 반드시 변수나 프로퍼티, 배열 요소 중 하나여야 한다.

일반적인 할당 연산자 외에 할당을 한꺼번에 수행하는 간단한 할당 연산자가 있고 다음과 같다.

  • x += y : x = x + y
  • x -= y : x = x - y
  • x = y : x = x y
  • x /= y : x = x / y
  • x %= y : x = x % y

해체 할당

ES6에서 새로 도입한 해체 할당(destructuring assignment)는 객체나 배열을 변수로 '해체'할 수 있다.

const obj = { b : 2, c : 3, d : 4 };
const {a, b, c} = obj;
console.log(a); // undefined a라는 프로퍼티 없음
console.log(b); // 2
console.log(c); // 3
console.log(d); // ReferenceError d는 정의되지 않음

객체를 해체할 때는 반드시 변수 이름과 객체의 프로퍼티 이름이 일치해야 한다.

profile
늘 한결같이 꾸준히

0개의 댓글