ES6 문법
2015년에 발표 된 Javascript 버전
화살표 함수, 삼항 연산자는 전 TIL에 정리해서 생략을 했다.
1. 변수 선언 (let, const)
ES6 문법으로 바뀌면서 let, const 두가지가 더 생겼다.
재할당 | 재선언 | |
var | 가능 | 가능 |
let | 가능 | 불가능 |
const | 불가능 | 불가능 |
2. 구조분해할당 ( de + structure + ing)
배열이나 객체의 속성을 분해해서 그 값을 변수에 담을 수 있게 만드는 것
2 - 1 배열의 경우
let [value1, value2] = [3, "new"];
console.log("1", value1);
console.log("2", value2);
let arr = ["value1", "value2", "value3"];
let [a, b, c, d = 4] = arr; // d=4 = 이니셜 밸류 = 초기값
console.log(a); // value1
console.log(b); // value2
console.log(c); // value3
console.log(d); // 4
2 - 2 객체의 경우
구조분해할당
let {name, age} = {
name : "yeon",
age : 26,
console.log(name); // string yeon
console.log(age); // number 26
새로운 이름으로 할당하는방법
let user = {
name : "yeon",
age : 26,
};
let {
name : newName,
age : newAge
} = user >> 아래로 변환
let { name : newName, age : newAge} = user; // 변환코드
let {name, age, birthday = "today"} = user;
console.log(name); // yeon
console.log(age); // 26
console.log(birthday); // today
3. 단축 속성명 (property shorthand)
키랑 벨류가 같으면 생략도 가능 ( name : name, 을 name, 으로)
1
const obj = {
name : name,
age : age,
}
2
const obj = {name,age}
3
const obj = {name : name,age : age} // 1,2,3 셋다 같다.
4. 전개 구문 ( spread operator)
현 구조를 버리고 새 구조를 만들때 사용한다.
기존에 있던 객체의 중괄호를 풀어서 새로운 중괄호를 만들 수 있게 해줌
구조분해할당과 함께 많이 사용되는 ES6 문법 중 하나
5. 나머지 매개변수
...로 args를 명시해 줘야 나머지 매개변수 라는걸 인지할 수 있다.
function examplerFunc (a, b, c, ...args){
console.log(a, b, c); // 1 2 3
console.log(...args); // 4 5 6 7
examplerFunc(1, 2, 3, 4, 5, 6, 7);
6. 템플릿 리터럴
백틱 = ``
자바스크립트 코드나 변수도 들어갈 수 있다. ${} 안에 넣으면 된다.
멀티 라인을 지원한다.
const testValue = "안녕하세요!";
console.log(`Hello World ${testValue}`); // Hello World 안녕하세요!
// 멀티 라인
console.log(`
Hello
My name is Javascript!!!!
Nice to meet you!!!
`);
// Hello
My name is Javascript!!!!
Nice to meet you!!!
7. 일급 객체로서의 함수 (객체로서 자바스크립트에 존재하기도 한다.)
다른 객체들과 일반적으로 같다고 생각해도 된다.
7 - 1 변수에 함수를 할당 가능 (다른 언어에는 말이 안되는 특징)
const sayHello = function(){
console.log('Hello!');
};
sayHello 라는 변수로 함수 호출이 가능(객체처럼)
함수가 마치 값으로 취급된다.
함수가 나중에 사용될 수 있도록 되어있다.
7 - 2 함수를 인자로 다른 함수에 전달할 수 있다.
7 - 2 - 1 콜백함수 : 매개변수로써 쓰이는 함수
7 - 2 - 2 고차함수 : 함수를 인자로 받거나 return하는 함수
function callFunction (func) {
// 매개변수로 받은 변수가 사실 함수다.
func();
const sayHello = function() {
console.log("Hi!");
callFunction(sayHello); // Hi!
7 - 3 함수를 반환할 수 있다.
function createAdder(num) {
return function(x) {
return x + num;
// const addFive = createAdder(5); // >> 이 코드를 아랫줄로 표현
const addFive = function(x) {
return x + 5;
console.log(addFive(10)); // 15
8. 일급 객체로서의 함수 (2)
const person = {
name : 'Yeon',
age : 26,
isMarried: false,
// sayHello : () => { // 화살표 함수는 this 를 바인딩 하지 않는다.
// console.log(`Hello, My name is ${this.name}`);
// }
sayHello : function(){ // 윗줄은 화살표 함수로 바꾼것
// console.log('Hello, My name is ' + this.name); // >> 밑에줄 템플릿 리터럴로 바꾼것
console.log(`Hello, My name is ${this.name}`);
person.sayHello(); // Hello, My name is Yeon
8 - 1 배열의 요소로 함수를 할당하는 것
const myArr = [
function(a, b) {
return a + b
}, // 0번째 요소
function (a,b) {
return a - b
}, // 1번째 요소
// 더하기
console.log(myArr[0](1, 3));
// 빼기
console.log(myArr[1](10, 7));
9. Map, Set
9 - 1 Map, Set의 목적
데이터의 구성, 검색, 사용을 효율적으로 처리하기 위해 만들어졌다. ( 기존의 객체 또는 배열보다)
9 - 2 Map
Key에 어떤 데이터타입(유형)도 다 들어올 수 있다. 키가 정렬된 순서로 저장되기 때문에
const myMap = new Map();
myMap.set('key', 'value');
myMap.get('key');
console.log(myMap.get('key')); // value
9 - 2 - 1 기능
검색, 삭제, 제거, 여부 확인
9 - 2 - 2 Map의 반복 (Iterator)
방법 : keys, values, entries
one
two
three
[Map Iterator] { 1, 2, 3 }
1
2
3
[Map Entries] { [ 'one', 1 ], [ 'two', 2 ], [ 'three', 3 ] }
[ 'one', 1 ]
[ 'two', 2 ]
[ 'three', 3 ]
3
true
9 - 3 Set
고유한 값을 저장하는 자료구조
값만 저장한다. (벨류만)
키는 저장하지 않는다.
값이 중복되지 않는 유일한 요소로만 구성된다. (집합 느낌)
값 추가, 검색, 값 삭제, 모든값 제거, 존재 여부 확인
value2
value3
value4
value5
마무리
문법이 ES6버전으로 바뀐후 새로 추가된 문법에 대해 정리해 보았다. ( 화살표 함수, 삼항 연산자 제외)
문법 설명듣고 예시만 보니깐 아직은 이용하는 문제들을 풀이하는데에 시간이 오래걸린다.
알고리즘 문제를 풀어보면서 활용을 많이 해보아야 겠다.
'TIL' 카테고리의 다른 글
TIL 240820 (콜백 함수 1) (0) | 2024.08.20 |
---|---|
TIL 240816 (데이터 타입[심화]) (0) | 2024.08.16 |
TIL 240813 (자바스크립트 기초문법 다지기 2) (0) | 2024.08.13 |
TIL 240812 (자바스크립트 기초문법 다지기 1) (0) | 2024.08.12 |
TIL 240809 (배운내용으로 웹페이지 수정해 보기) (0) | 2024.08.09 |