ES6

2024. 3. 1. 16:45·Javascript

❓ES6

- ECMAScript 표준의 가장 최신 버전(6번째 버전)

❔예시

1. Arrow function(화살표 함수): 간결한 문법으로 함수 선언

const square = (num) => num * num;

2. Template literals (템플릿 리터럴): 문자열 생성시 따옴표 대신, 백틱(`)을 사용(기존의 + 대체)

const name = "홍길동";
console.log(`Hello, ${name}!`);  // "Hello, 홍길동!"

3. Destructuring assignment (구조 분해 할당): 배열이나 객체의 속성을 해체하여 그 값을 개변 변수에 담음

let [a, b] = [1, 2];
let {name, age} = {name: "홍길동", age: 25};

4. Spread and Rest operators (스프레드와 나머지 연산자): ...연산자를 이용해 배열이나 객체를 확장하거나, 함수의 인자를 유동적으로 작성할 수 있음

// Spread Operator(스프레드 연산자)

let arr1 = [1, 2, 3];
let arr2 = [...arr1, 4, 5, 6];  // [1, 2, 3, 4, 5, 6]

let obj1 = {a: 1, b: 2};
let obj2 = {...obj1, c: 3};  // {a: 1, b: 2, c: 3}

let arr = [1, 2, 3, 4, 5]; 
console.log(...arr);
// 1 2 3 4 5

var str = 'javascript'; 
console.log(...str);
// "j" "a" "v" "a" "s" "c" "r" "i" "p" "t"

// Rest Operator(나머지 연산자)

function func1(...args) {
	console.log(`args: [${args}]`)
  // args: [1,2,3,4,5]
}
func1(1,2,3,4,5);

function func2(arg1, arg2, ...arg3) {
  	console.log(`arg1: ${arg1}, arg2: ${arg2}, arg3: [${arg3}]`)
  // arg1: 1, arg2: 2, arg3: [3,4,5]
}
func2(1,2,3,4,5);

5. 반복문 3종 (forEach(), map(), reduce())

1. forEach(): 배열의 각 요소에 대해 주어진 함수 실행. 반환값x. 원본 배열 변경

let arr = [1, 2, 3, 4, 5];
arr.forEach((value, index) => {
  console.log(`Index ${index} has value ${value}`);
});

2. map(): 배열의 각 요소에 대해 주어진 함수를 실행하고, 그 결과로 새로운 배열을 반환. 원본 배열 보존

let arr = [1, 2, 3, 4, 5];
let newArr = arr.map((value) => value * 2);
console.log(newArr);  // [2, 4, 6, 8, 10]

3. reduce(): 배열의 각 요소에 대해 callback함수의 실행값을 누적하여 단일 출력값을 반환

let arr = [1, 2, 3, 4, 5];
let sum = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum);  // 15

// 배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값);

6. String Method (includes, startsWith, endsWith) :포함되어있는지(includes), 시작하는지(startsWith), 끝나는지(endsWith) boolean 타입을 return 해준다.

const str = 'Hello World Hanamon';
str.includes("Hana"); // true
str.startsWith("Hello"); // true
str.endsWith("mon"); // true

🔸변수 선언 방식의 차이(var, let, const)

var 재정의o 재선언o
let 재정의o 재선언x
const 재정의x 재선언x

❎ var을 사용하지 않는 이유

1. 스코프 문제

var는 함수 레벨 스코프(function-level scope) -> var로 선언된 변수가 해당 함수 내 어디서든 접근 가능! -> 예상치 못한 결과나 버그를 초래

let과 const는 블록 레벨 스코프(block-level scope) -> 블록({}) 내에서만 접근 가능하며, 블록 밖에서는 접근할 수 없음 -> 코드 예측 쉬움

2. 호이스팅 문제

❓호이스팅: JavaScript에서 변수 선언이 그 범위의 최상단으로 끌어올려지는 현상

var는 호이스팅에 의해 변수가 선언되기 전에도 접근이 가능 -> 이 때 변수의 값은 undefined -> 가독성 저하 및 실수 유발

let과 const는 호이스팅이 발생하지만, 선언 전에 접근하려하면 ReferenceError가 발생 -> 변수 선언을 먼저 하도록 유도

3. 재선언 문제

var는 같은 스코프 내에서 같은 이름의 변수를 여러 번 선언할 수 있음 -> 같은 이름의 변수를 재선언하는 실수를 유발

let과 const는 같은 스코프 내에서 동일한 이름의 변수 재선언시 에러 발생


❓filter()

- 배열의 각 요소를 테스트하고, 주어진 테스트를 통과하는 모든 요소로 이루어진 새로운 배열을 반환. 원본 배열 보존

let arr = [1, 2, 3, 4, 5, 6];
let evenNumbers = arr.filter((value) => value % 2 === 0);
console.log(evenNumbers);  // [2, 4, 6]

 

저작자표시 (새창열림)

'Javascript' 카테고리의 다른 글

[Javascript] Array.prototype.sort()  (0) 2025.03.28
Promise & async & await  (0) 2024.03.01
Webpack & Babel  (0) 2024.03.01
fetch & axios  (0) 2024.03.01
'Javascript' 카테고리의 다른 글
  • [Javascript] Array.prototype.sort()
  • Promise & async & await
  • Webpack & Babel
  • fetch & axios
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (382)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    개발자취업
    Til
    99클럽
    코딩테스트준비
    항해99
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
ES6
상단으로

티스토리툴바