Web Development/vue

[콜럼Vue스]ES6

쟤리 2024. 9. 29. 13:16
728x90
반응형

ES6 가 무엇인가 ?

자바스크립트의 새로운 버전임. 자바스크립트를 더 쉽게 쓰고, 효율적으로 만들기 위해 나온 표준.

원래 자바스크립트도 잘 작동했지만, ES6로 업데이트 되면서 여러 기능이 추가되고 개선된 거임 ! 

비유로 말하자면, 스마트폰 : 자바스크립트 = 소프트웨어업데이트 : ES6 

 

ES6의 핵심기능

1. let 과 const

2. 화살표 함수 (Arrow Function)

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

4. 디스트럭처링 할당 (Destructuring Assignment)

5. 클래스 (Class)

6. Promise

7. 모듈 (Modules)

 

1. let과 const

 

  • let과 const는 ES6에서 도입된 새로운 변수 선언 방법임.
  • 기존의 var는 함수 스코프만을 지원했지만, let과 const는 블록 스코프(block scope)를 지원하여 변수의 유효 범위를 더 명확하게 제한할 수 있음.
  • scope 이 뭐임? => 변수의 가용범위를 제한하는 역할
  • https://jerrycodezzz.tistory.com/57
  • let: 블록 스코프를 가지는 변수. 반복문이나 조건문 등 블록 내에서만 유효하며, 중복 선언이 불가능함. 값은 변경할 수 있음.
  • const: 상수를 선언하는 방법으로, 선언과 동시에 값을 할당해야 하며, 한 번 할당된 값을 변경할 수 없음. 하지만, 객체나 배열의 경우 내부 값을 변경할 수 있음.
  • let은 값 변경 가능 ! const는 불가능 !!!!!!!!!

 

 

스코프 scope

스코프 (Scope) 는 변수나 함수가 유요한 범위를 의미즉, 코드 내에서 특정 변수나 함수가 어디에서 접근 가능하고, 어디에서 사용할 수 있는지를 결정하는 개념임자바스크립트에서는 스코프가

jerrycodezzz.tistory.com

 

 

2. 화살표 함수 (Arrow Function)

  • 화살표 함수는 기존 함수 선언보다 간결한 문법으로, 특히 콜백 함수에서 유용함. 또한 화살표 함수는 this의 바인딩 방식을 기존 함수와 다르게 처리함.
  • 문법 차이: 기존의 함수 표현식보다 간결하고, 중괄호와 return을 생략할 수 있음.
// 기존 함수 표현식
const sum = function(a, b) {
  return a + b;
};

// 화살표 함수
const sum = (a, b) => a + b;

 

this의 차이: 화살표 함수는 상위 스코프의 this를 상속 받음. 이는 this가 예상치 못하게 변하는 문제를 해결해 줌.

https://jerrycodezzz.tistory.com/56

 

this

자바스크립트의 this는 함수가 호출될 때 그 함수가 어떻게 호출되었는지에 따라 동적으로 결정되는 값임.this는 자바스크립트의 실행 컨텍스트(Execution Context)에 따라 값이 달라지며, 상황에 따라

jerrycodezzz.tistory.com

 

 

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

  • 템플릿 리터럴은 문자열을 보다 간단하게 작성할 수 있는 방법임. ES6 이전에는 문자열과 변수를 합칠 때 문자열 연결(concatenation)을 사용해야 했으나, 템플릿 리터럴은 백틱(`)을 사용하여 문자열 안에서 변수를 간단히 삽입할 수 있음.
  • 문법: 템플릿 리터럴에서는 ${} 구문을 사용하여 변수나 표현식을 문자열 안에 쉽게 포함시킬 수 있음.
const name = "Jerry";
const greeting = `Hello, ${name}!`; // Hello, Jerry!

4. 디스트럭처링 할당 (Destructuring Assignment)

  • 디스트럭처링 할당은 배열이나 객체에서 값을 간단하게 추출하는 방법임. 이를 통해 변수 선언 시 배열이나 객체의 여러 값을 손쉽게 할당할 수 있음.
  • 배열 디스트럭처링: 배열의 값을 각각의 변수에 쉽게 할당할 수 있음.
const [a, b] = [1, 2]; // a = 1, b = 2

 

객체 디스트럭처링: 객체의 프로퍼티를 분해하여 변수에 할당할 수 있음.

const person = { name: "Jerry", age: 29 };
const { name, age } = person; // name = "Jerry", age = 29

 

기본값 설정: 디스트럭처링 시 기본값을 지정할 수 있음.

const [x = 5, y = 10] = [1]; // x = 1, y = 10

 

 

장점: 디스트럭처링은 코드가 짧아지고, 객체나 배열에서 필요한 값을 쉽게 추출할 수 있어 가독성이 높아짐.

5. 클래스 (Class)

  • ES6에서 객체 지향 프로그래밍(OOP)을 지원하기 위해 도입된 문법임. 기존의 프로토타입 기반 객체 지향 패턴을 보다 직관적이고 이해하기 쉽게 작성할 수 있음.
  • 클래스 선언: class 키워드를 사용해 클래스를 선언함.
class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  greet() {
    return `Hello, my name is ${this.name}`;
  }
}

상속: 클래스를 상속받아 다른 클래스를 생성할 수 있음.

class Employee extends Person {
  constructor(name, age, position) {
    super(name, age); // 부모 클래스의 생성자 호출
    this.position = position;
  }

  work() {
    return `${this.name} is working as a ${this.position}`;
  }
}

장점: 클래스 문법을 통해 더 직관적이고, 재사용 가능한 객체를 쉽게 정의할 수 있음.

6. Promise

https://jerrycodezzz.tistory.com/55

 

async / await

async/await는 비동기 작업을 쉽게 처리할 수 있도록 ES8에서 도입된 자바스크립트 기능임.Promise 기반의 비동기 코드를 동기식 코드처럼 작성할 수 있게 해주는 문법으로, 비동기 작업의 가독성을

jerrycodezzz.tistory.com

 

  • Promise비동기 작업을 처리하기 위한 객체임. 이전에는 콜백 함수로 비동기 처리를 했으나, Promise는 비동기 작업의 흐름을 더 직관적이고 체계적으로 관리할 수 있게 해줌.
  • 상태: Promise는 세 가지 상태를 가짐.
    • 대기(pending): 초기 상태, 아직 완료되지 않음.
    • 이행(fulfilled): 비동기 작업이 성공적으로 완료됨.
    • 거부(rejected): 비동기 작업이 실패함.
  • 사용법: new Promise를 사용해 비동기 작업을 정의하고, then과 catch로 결과를 처리함.
const promise = new Promise((resolve, reject) => {
  const success = true;
  if (success) {
    resolve("작업 성공");
  } else {
    reject("작업 실패");
  }
});

promise
  .then(result => console.log(result)) // 성공: "작업 성공"
  .catch(error => console.error(error)); // 실패: "작업 실패"

장점: Promise를 사용하면 비동기 코드가 더 읽기 쉽고, 콜백 지옥을 방지할 수 있음.

 

7. 모듈 (Modules)

  • ES6 이전에는 자바스크립트 파일을 나누고 코드를 재사용하는 데 어려움이 있었음. ES6의 모듈 시스템은 파일 간에 코드를 모듈화하고 데이터를 주고받을 수 있게 해줌.
  • 모듈 내보내기(export): 다른 파일에서 사용할 수 있도록 값을 내보냄.
// 모듈에서 export
export const value = 42;
export function greet() {
  return "Hello!";
}
  • 모듈 가져오기(import): 다른 모듈에서 값을 가져옴.
// 다른 파일에서 import
import { value, greet } from './module';
console.log(value); // 42
console.log(greet()); // "Hello!"
  • 장점 : 모듈 시스템을 사용하면 코드가 더 구조화되고 재사용성이 높아짐. 또한, 대규모 프로젝트에서 각 기능을 분리해 관리할 수 있음
728x90
반응형

'Web Development > vue' 카테고리의 다른 글

[콜럼Vue스] 디렉티브 Directives  (0) 2024.09.29
[콜럼Vue스] Parameter  (0) 2024.09.29
props  (0) 2024.09.19
LocalStorage  (0) 2024.09.19
pinia  (0) 2024.09.19