ECMAScript 2015(ES6(ECMAScript 6)라고도 함)는 JavaScript에 대한 중요한 업데이트로, 코딩을 더욱 효율적이고 관리하기 쉽게 만드는 새로운 구문과 기능을 도입합니다. JavaScript는 웹 개발에 사용되는 가장 널리 사용되는 프로그래밍 언어 중 하나이며 ES6의 개선으로 기능이 크게 향상되었습니다.
이 가이드는 ES6에 도입된 중요한 기능을 다루며, 특히 강력하고 새로운 함수 작성 방식인 화살표 함수에 중점을 두고 있습니다.
ES6에서는 변수를 선언하는 두 가지 새로운 방법인 let과 const를 도입했습니다.
let: 블록 범위 변수를 선언합니다. 즉, 변수는 선언된 블록 내에서만 사용할 수 있습니다.
let x = 10; if (true) { let x = 2; console.log(x); // 2 (inside block) } console.log(x); // 10 (outside block)
const: 재할당할 수 없는 상수 변수를 선언합니다. 그러나 이것이 변수를 불변으로 만드는 것은 아닙니다. const로 선언된 객체는 여전히 속성을 변경할 수 있습니다.
const y = 10; y = 5; // Error: Assignment to constant variable. const person = { name: "John", age: 30 }; person.age = 31; // This is allowed.
ES6의 가장 많이 언급되는 기능 중 하나는 화살표 기능입니다. 함수 작성을 위한 더 짧고 간결한 구문을 제공합니다.
#### 구문 비교:
기존 함수(ES5):
var add = function(x, y) { return x y; };
화살표 함수(ES6):
const add = (x, y) => x y;
화살표 기능이 다른 점은 다음과 같습니다.
한 줄 화살표 기능의 예:
const multiply = (a, b) => a * b; console.log(multiply(4, 5)); // 20
화살표 함수는 매개변수 없이도 사용할 수 있습니다.
const greet = () => "Hello, World!"; console.log(greet()); // "Hello, World!"
한 줄 이상으로 구성된 함수의 경우 중괄호 {}가 필요하며 반환 문은 명시적이어야 합니다.
const sum = (a, b) => { let result = a b; return result; };
화살표 함수와 이것
중요한 차이점 중 하나는 이것이 Arrow Functions에서 작동하는 방식입니다. 기존 함수와 달리 Arrow 함수는 자체 this를 바인딩하지 않고 주변 컨텍스트에서 상속합니다.
const person = { name: "John", sayName: function() { setTimeout(() => { console.log(this.name); }, 1000); } }; person.sayName(); // "John"
위의 예에서 setTimeout 내부의 화살표 함수는 사람 개체를 올바르게 참조하는 sayName 메서드에서 이를 상속합니다.
구조 분해를 통해 배열이나 객체에서 값을 추출하고 이를 보다 간결한 방식으로 변수에 할당할 수 있습니다.
객체 파괴:
const person = { name: "John", age: 30 }; const { name, age } = person; console.log(name); // "John" console.log(age); // 30
배열 파괴:
const fruits = ["Apple", "Banana", "Orange"]; const [first, second] = fruits; console.log(first); // "Apple" console.log(second); // "Banana"
... 연산자를 사용하여 배열을 개별 요소로 확장하거나 여러 요소를 배열로 수집할 수 있습니다.
확산: 배열을 개별 요소로 확장합니다.
const numbers = [1, 2, 3]; const newNumbers = [...numbers, 4, 5]; console.log(newNumbers); // [1, 2, 3, 4, 5]
Rest: 여러 인수를 배열로 수집합니다.
function sum(...args) { return args.reduce((acc, curr) => acc curr); } console.log(sum(1, 2, 3, 4)); // 10
프라미스는 JavaScript에서 비동기 작업을 처리하는 데 사용됩니다. Promise는 현재, 미래에 사용할 수 있거나 전혀 사용할 수 없는 값을 나타냅니다.
예:
const myPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve("Success!"); }, 1000); }); myPromise.then(result => { console.log(result); // "Success!" after 1 second });
이 예에서 Promise는 1초 후에 확인되고 then() 메서드가 확인된 값을 처리합니다.
ES6에서는 함수 매개변수의 기본값을 설정할 수 있습니다. 매개변수가 제공되지 않거나 정의되지 않은 경우에 유용합니다.
예:
function greet(name = "Guest") { return `Hello, ${name}!`; } console.log(greet()); // "Hello, Guest!" console.log(greet("John")); // "Hello, John!"
일반적인 작업을 더 쉽게 만들기 위해 새로운 메서드가 문자열에 추가되었습니다.
includes(): 문자열에 지정된 값이 포함되어 있는지 확인합니다.
let str = "Hello world!"; console.log(str.includes("world")); // true
startsWith(): 문자열이 지정된 값으로 시작하는지 확인합니다.
console.log(str.startsWith("Hello")); // true
endsWith(): 문자열이 지정된 값으로 끝나는지 확인합니다.
console.log(str.endsWith("!")); // true
ES6에서는 배열 작업을 위한 새로운 방법을 도입했습니다.
find(): 조건을 만족하는 첫 번째 요소를 반환합니다.
const numbers = [5, 12, 8, 130, 44]; const found = numbers.find(num => num > 10); console.log(found); // 12
findIndex(): 조건을 만족하는 첫 번째 요소의 인덱스를 반환합니다.
const index = numbers.findIndex(num => num > 10); console.log(index); // 1 (position of 12 in the array)
ES6에서는 JavaScript의 기존 프로토타입 기반 상속에 대한 구문적 설탕인 클래스를 JavaScript에 도입했습니다. 클래스를 사용하면 더 명확하고 이해하기 쉬운 객체 지향 프로그래밍이 가능합니다.
예:
class Car { constructor(brand, year) { this.brand = brand; this.year = year; } displayInfo() { return `${this.brand} from ${this.year}`; } } const myCar = new Car("Toyota", 2020); console.log(myCar.displayInfo()); // "Toyota from 2020"
ES6는 JavaScript를 변형하여 더욱 효율적이고 사용하기 쉽게 만들었습니다. 화살표 함수의 도입으로 함수 구문이 단순화되고, 구조 분해, 약속, 클래스 및 확산 연산자와 같은 새로운 기능이 추가되었습니다. 를 사용하면 개발자가 더욱 깔끔하고 표현력이 풍부한 코드를 작성할 수 있습니다. 초보자이든 고급 개발자이든, 이러한 ES6 기능을 이해하는 것은 최신 JavaScript를 작성하는 데 필수적입니다.
이러한 개념을 익히면 실제 코딩 문제를 처리하고 효율적이고 확장 가능한 웹 애플리케이션을 구축할 수 있는 능력을 더 갖추게 됩니다.
GitHub에서 Arrow Functions 프로젝트에 대한 후속 조치
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3