본문 바로가기

IT∙테크∙프로그래밍

예제로 이해하는 자바스크립트 최신 문법 11가지

최신 문법을 알아야 하는 이유

자바스크립트 (Javascript)는 이제까지도 지속적으로 발전하며, 최신 트렌드를 반영한 혁신적인 문법들을 선보이고 있습니다. 이들 현대적인 문법들은 코드의 효율성을 높이며, 가독성을 향상시키는 동시에 코드의 실행 시간을 줄이는 성능상의 이점을 제공합니다. 만약 이런 최신 문법에 익숙하지 않다면, 현대적인 코딩 스타일을 이해하기 어렵게 되거나, 당신의 코드가 더 이상 시대를 따라가지 못하는 것으로 여겨질 수 있습니다.

자바스크립트의 최신 문법에는 주로 ES6 (ECMAScript 2015) 이후의 특징들이 포함되며, 그 중에서도 letconst, 화살표 함수(Arrow Functions), 템플릿 리터럴(Template Literals), 비구조화 할당(Destructuring Assignment), 프로미스(Promises) 그리고 옵셔널 체이닝(Optional Chaining) 등이 있습니다.

이런 문법들이 도입된 배경에는 여러 가지 이유가 있습니다. 기술의 발전과 사용자들의 요구사항 변화는 자바스크립트가 더욱 다양한 문제를 해결할 수 있도록 도와주었습니다. 또한, 개발자 커뮤니티의 피드백과 제안에 따라 프로그래밍 언어의 구조와 문법이 발전하게 되었습니다. 이러한 변화를 통해, 자바스크립트는 더욱 강력하고 유연한 언어로 자리매김하게 되었습니다.

그럼 이제, 새로운 자바스크립트 문법의 세계로 함께 떠나볼 준비가 되셨나요?


Javascript Developer's Swag


최신 자바스크립트 문법 11가지

1. letconst

예시:

let mutableValue = 5;
mutableValue = 10;

const immutableValue = 20;
// immutableValue = 30; // TypeError: Assignment to constant variable.

설명:
ES6에서 도입된 letconstvar를 대체하는 새로운 변수 선언 키워드입니다. let은 재할당이 가능한 변수를 선언하는데 사용되며, const는 재할당이 불가능한 상수를 선언하는데 사용됩니다.

letconst의 가장 중요한 차이점은 const가 한번 선언하면 그 값을 변경할 수 없다는 점입니다. 반면 let은 선언한 후에도 값을 변경할 수 있습니다. 또한, letconst는 블록 범위(block scope)를 가지므로, var와 달리 변수가 선언된 블록 내에서만 접근할 수 있습니다. 이러한 특성들은 코드의 안정성을 향상시키며 버그를 줄이는 데 도움이 됩니다.

이와 같이, letconst는 자바스크립트에서 변수를 다루는 더 나은 방법을 제공하며, 가변성(mutable)과 불변성(immutable)에 대한 명확한 구분을 통해 코드의 가독성과 안정성을 높이는데 기여합니다.

2. 템플릿 리터럴(Template Literals)

예시

const name = 'John';
const age = 25;

const message = `나의 이름은 ${name}이고, 나이는 ${age}입니다.`;
console.log(message);

설명
템플릿 리터럴은 문자열을 보다 간결하게 작성할 수 있게 해줍니다. 백틱(``)로 감싼 문자열 내에서 변수나 표현식을 삽입할 수 있습니다. 이를 통해 문자열을 연결하는 번거로움을 줄일 수 있습니다. `는 작은 따옴표와 헷갈릴 수 있지만 백틱 혹은 백쿼트 라고 합니다.(참고: 백틱 문자과 템플릿 리터럴

반응형

 

3. 화살표 함수(Arrow Functions)

예시:

const numbers = [1, 2, 3, 4, 5];

const evenNumbers = numbers.filter(number => number % 2 === 0);
console.log(evenNumbers);

설명
화살표 함수는 함수를 더 간단하게 정의할 수 있는 문법입니다. (매개변수) => { 코드 } 형태로 작성할 수 있습니다. 이를 사용하면 함수의 선언과 반환값을 간결하게 표현할 수 있습니다.

4. 구조 분해 할당(Destructuring Assignment)

예시:

const user = { name: 'Alice', age: 30 };

const { name, age } = user;
console.log(name, age);

설명
구조 분해 할당(Destructuring Assignment)은 배열이나 객체의 속성을 변수로 분해하여 할당하는 방법입니다. [a, b] = [1, 2]와 같이 사용할 수 있습니다. 이를 통해 배열이나 객체의 값을 더 효율적으로 추출하고 할당할 수 있습니다.

5. 확장된 매개변수 기능

예시

function greet(name = 'Guest') {
  console.log(`안녕하세요, ${name}님!`);
}

greet(); // 출력: 안녕하세요, Guest님!
greet('John'); // 출력: 안녕하세요, John님!

설명
매개변수에 기본값을 설정하거나 나머지 매개변수를 사용할 수 있습니다. 기본값을 설정하면 함수를 호출할 때 해당 매개변수를 생략할 수 있습니다. 나머지 매개변수는 함수에 전달된 인수들을 배열로 받아올 수 있습니다.

6. 클래스

예시:

class Circle {
  constructor(radius) {
    this.radius = radius;
  }

  getArea() {
    return Math.PI * this.radius ** 2;
  }
}
const circle = new Circle(5);
console.log(circle.getArea());

설명
클래스는 객체 지향 프로그래밍을 위해 도입된 문법입니다. 클래스를 사용하면 속성과 메서드를 더 구조적으로 정의할 수 있습니다. 클래스를 통해 객체를 생성하고 상속을 구현할 수 있습니다.

7. 프로미스(Promises)

예시

function fetchData() {
  return new Promise((resolve, reject) => {
    // 비동기 작업 수행
    // 성공 시 resolve 호출, 실패 시 reject 호출
  });
}

fetchData()
  .then(data => console.log(data))
  .catch(error => console.log(error));

설명
프로미스는 비동기 작업을 더 효율적으로 처리하기 위한 문법입니다. 비동기 작업의 성공과 실패를 처리하는 콜백 함수를 체이닝하여 코드를 더 간결하고 가독성 있게 작성할 수 있습니다.

8. async/await

예시:

function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function fetchUser() {
  await delay(2000); // 2초 대기
  return 'Alice';
}

async function greetUser() {
  const user = await fetchUser();
  console.log(`안녕하세요, ${user}님!`);
}

greetUser();

설명
async/await는 프로미스를 기반으로 한 비동기 처리 문법입니다. async 함수 내에서 await 키워드를 사용하여 비동기 작업의 완료를 기다릴 수 있습니다. 이를 통해 비동기 코드를 동기적인 흐름으로 작성할 수 있습니다.

9. 모듈

예시

// math.js 모듈
export function add(a, b) {
  return a + b;
}

export function subtract(a, b) {
  return a - b;
}

// main.js 모듈
import { add, subtract } from './math.js';

console.log(add(5, 3)); // 출력: 8
console.log(subtract(5, 3)); // 출력: 2

설명
모듈은 자바스크립트 코드를 재사용하기 위한 기능입니다. 모듈을 사용하면 함수, 클래스, 변수 등을 다른 파일에서 가져와 사용할 수 있습니다. 이를 통해 코드를 모듈화하고 유지보수하기 쉽게 만들 수 있습니다.

이렇게 자바스크립트의 최신 문법 10가지에 대한 설명과 예시를 마크다운 형식으로 제공해드렸습니다. 어려운 개념을 이해하기 쉽게 설명하였으며, 독자들이 흥미를 느낄 수 있도록 구성되었습니다.
물론입니다! 여기에 자바스크립트의 최신 문법 2가지를 더 제시해드리겠습니다:

10. 전개 구문 (Spread Syntax)

예시

const numbers = [1, 2, 3, 4, 5];
const sum = (a, b, c, d, e) => a + b + c + d + e;

console.log(sum(...numbers));

설명
전개 구문은 배열이나 객체를 펼쳐서 개별 요소로 분리하는 기능입니다. ...을 사용하여 전개 구문을 적용할 수 있습니다. 배열의 요소를 함수의 인수로 전달하거나 배열을 병합할 때 유용하게 사용될 수 있습니다.

11. Optional Chaining(선택적 체이닝)

예시

const user = {
  name: 'Alice',
  address: {
    city: 'Seoul',
    street: '123 Main St'
  }
};

console.log(user?.address?.city);
console.log(user?.phone?.number);

설명
Optional Chaining은 객체의 속성에 접근할 때 해당 속성이 존재하는지 먼저 확인한 후 접근하는 기능입니다. ?.을 사용하여 선택적으로 속성에 접근할 수 있습니다. 속성이 존재하지 않을 경우 undefined를 반환하고 에러를 방지할 수 있습니다.

위에 제시한 2가지 추가 문법을 포함하여 총 10가지의 최신 자바스크립트 문법을 설명드렸습니다. 이를 통해 독자들은 자바스크립트의 다양한 기능과 문법을 흥미롭게 학습하고 활용할 수 있을 것입니다.


참고

저희가 앞서 알려준 최신 문법들은 ECMAScript 언어 사양의 여러 버전에 속하는 문법들입니다. 각 문법은 특정 ECMAScript 버전에 도입되었거나 해당 버전 이후로 사용 가능한 문법입니다. 다음은 각 문법이 도입된 ECMAScript 버전과 해당 버전의 출시 년도에 대한 정보입니다:

  1. letconst: ECMAScript 2015 (ES6) - 2015년
  2. 템플릿 리터럴: ECMAScript 2015 (ES6) - 2015년
  3. 화살표 함수: ECMAScript 2015 (ES6) - 2015년
  4. 구조분해 할당: ECMAScript 2015 (ES6) - 2015년
  5. 확장된 매개변수 기능: ECMAScript 2015 (ES6) - 2015년
  6. 클래스: ECMAScript 2015 (ES6) - 2015년
  7. 프로미스: ECMAScript 2015 (ES6) - 2015년
  8. async/await: ECMAScript 2017 (ES8) - 2017년
  9. 모듈: ECMAScript 2015 (ES6) - 2015년
  10. 전개 구문 (Spread Syntax): ECMAScript 2015 (ES6) - 2015년
  11. 옵셔널 체이닝 (Optional Chaining): ECMAScript 2020 (ES11) - 2020

이와 같이 각 문법은 특정 ECMAScript 버전에 도입되었으며, 해당 버전 이후로 사용할 수 있습니다. 따라서 프로젝트의 타겟 환경과 자바스크립트 엔진의 지원 범위를 고려하여 문법을 사용해야 합니다. 일반적으로는 최신 버전의 브라우저와 Node.js에서 대부분의 최신 문법을 지원합니다.

반응형