Javascript/ECMAScript 2015 (ES6)

JavaScript 입문(1) - 모던 자바스크립트 | 김민준

AGAL 2020. 6. 18. 19:08
반응형

[출처 : https://learnjs.vlpt.us]

템플릿 리터럴

ES5 : 

function hello(name) {
  return "hello, " + name
}
console.log(hello("AGAL"));

ES6 : 

function hello(name) {
  return `hello, ${name}`
}
console.log(hello("AGAL"));

*함수에서는 return이 사용된 순간, 함수가 종료된다.


화살표 함수

const hello = (name) => {
  return `hello, ${name}`
}
console.log(hello("AGAL"));

함수 내부에서 어떤 값을 바로 return 할 경우 :

const hello = (name) => `hello, ${name}`;
console.log(hello("AGAL"));

*화살표 함수에서 가리키는 this는 함수가 속해 있는 곳을 가리키지 않는다.


비구조할당(객체 구조 분해)

특정 값을 객체에서 빼온다.

const gundam = {
  name: "퍼스트 건담",
  code: "RX-78-2"
  pilot: "아무로 레이"
}

function print1(ms) { 
  console.log(`${ms.name}의 형식넘버는 ${ms.code}이며, 파일럿은 ${ms.pilot}입니다.`);
}
function print2(ms) {
  const {name, code, pilot} = ms
  console.log(`${name}의 형식넘버는 ${code}이며, 파일럿은 ${pilot}입니다.`);
}
function print3({name, code, pilot}) {
  console.log(`${name}의 형식넘버는 ${code}이며, 파일럿은 ${pilot}입니다.`);
}

print1(gundam) // 퍼스트 건담의 형식넘버는 RX-78-2이며, 파일럿은 아무로 레이입니다.
print2(gundam) // 퍼스트 건담의 형식넘버는 RX-78-2이며, 파일럿은 아무로 레이입니다.
print3(gundam) // 퍼스트 건담의 형식넘버는 RX-78-2이며, 파일럿은 아무로 레이입니다.

객체 내에 있는 함수

const dog = {
  sound: "멍멍",
  say: function(){
    console.log(this.sound)
  }
}
const cat = {
  sound: "야~옹"
}

cat.say = dog.say;
dot.say(); // "멍멍"
cat.say(); // "야~옹"

const catSound = cat.say;
cat();  // TypeError: Cannot read property 'sound' of undefined

*function 키워드로 만든 함수에서 가리키는 this는 함수가 속해 있는 곳을 가리킨다.

 ex) 객체 내부의 function 키워드 함수(say)의 this는 함수가 속한 객체(dog)를 가리킨다. 


Getter 와 Setter 함수

getter

getter 함수는 특정 값을 조회하려고 할 때마다, 특정 코드를 실행시키고 연산된 값을 받아서 사용한다.

const number = {
  a: 1,
  b: 2,
  get sum() {
    console.log("sum 함수가 실행됩니다.")
    return this.a + this.b;
  }
}
console.log(number.sum);  
// "sum 함수가 실행됩니다."  :5줄
// 3                        :9줄
numbers.b = 5;
console.log(number.sum);  // 6

setter

특정 값을 설정하려고 할 때마다, 특정 코드를 실행시키고 연산된 값을 받아서 사용한다.

const gundam = {
  _name: "퍼스트 건담",
  set name(name) {
    console.log(`${name}(으)로 바뀝니다.`)
    this._name = name;
  }
}
console.log(gundam._name);  // "퍼스트 건담"                :8줄
gundam.name = "제타 건담";   // "제타 건담(으)로 바뀝니다."  :4줄
console.log(gundam._name);  // "제타 건담"                  :10줄

* key에 _를 붙이는 이유는 setter 함수와 겹치지 않도록 하기 위해서

* setter 함수는 파라미터를 무조건 설정해야 한다.


for ... of

배열 안에 있는 요소를 반복문으로 사용

const numbers = [10, 20, 30, 40, 50];

for (let number of numbers) {
  console.log(number)    // 10, 20, 30, 40, 50
}

Object 내장 함수

const gundam = {
  code: "RX-78-2",
  name: "First Gundam",
  pilot: "Amuro Ray"  
}

console.log(Object.keys(gundam))   // ["code", "name", "pilot"]
console.log(Object.values(gundam))   // ["RX-78-2", "First Gundam", "Amuro Ray"]
console.log(Object.entries(gundam))   // [["code", "RX-78-2"], ["name", "First Gundam"], ["pilot", "Amuro Ray"]]

for ... in

객체 안에 있는 키값을 반복문으로 사용

const gundam = {code: "RX-78-2", name: "First Gundam", pilot: "Amuro Ray"}

for (ley key in gundam) {
  console.log(`${key}: ${gundam.key}`);   // code: RX-78-2, name: First Gundam, pilot: Amuro Ray
}

continue와 break

continue

특정 조건이 만족되었을 때 continue로 이후의 코드는 스킵하고 다음 루프가 실행된다. 

break

특정 조건이 만족되었을 때 반복문을 끝낸다.

반응형