ES6 - functions


arrow function

  • ES6 이전 function
const number = [1,2,3,4,5]

const numbers = number.map(function(argument){
    return argument + '';
});

console.log(numbers);
// ["1번", "2번", "3번", "4번", "5번"]
  • ES6 arrow function 적용
  • arrow function => 을 사용할 때 바로 {}가 나오면 안된다.
const number = [1,2,3,4,5]

// return 해야 할 expression표현식;이 한줄이면 return과 중괄호{}를 생략해야한다.
const numbers = number.map(argument => argument + '');

console.log(numbers);
// ["1번", "2번", "3번", "4번", "5번"]

this in arrow function

  • arrow function에서 this를 사용하면 this는 window를 가리킨다.
const CREAMer = {
    name: "Terry",
    age: 30,
    // 실행되지 않는 함수. 
    addYear: () => this.age++
    // 여기서 this는 window를 가리킨다.
};

console.log(CREAMer);
// {name: "Terry", age: 30, addYear: ƒ}
CREAMer.addYear();
CREAMer.addYear();
console.log(CREAMer);
// {name: "Terry", age: 30, addYear: ƒ}
  • this를 사용하고 싶으면 arrow function을 사용하지마라.
const CREAMer = {
    name: "Terry",
    age: 30,
    addYear(){
        this.age++;
    }
};

console.log(CREAMer);
// {name: "Terry", age: 30, addYear: ƒ}
CREAMer.addYear();
CREAMer.addYear();
console.log(CREAMer);
// {name: "Terry", age: 32, addYear: ƒ}

arrow function in real world

  • array.find() : 조건을 만족하는 첫번째 element를 return.
const emails = [
        "abc@naver.com",
        "def@gmail.com",
        "ghi@gmail.com",
        "jkl@naver.com",
        "mnp@creamer.com"
];

// includes(something)는 something이 포함되어있는지 체크
const foundEmail = emails.find(argument => argument.includes("@gmail.com"));

console.log(foundEmail);
// def@gmail.com

const number = [5, 12, 8, 130, 44];

const foundNumber = number.find(argument => argument > 10);

console.log(found);
// 12
  • array.filter() : 조건을 통과한 elements로 새로운 array를 생성.
const emails = [
        "abc@naver.com",
        "def@gmail.com",
        "ghi@gmail.com",
        "jkl@naver.com",
        "mnp@creamer.com"
];

const noGmail = emails.filter(argument => !argument.includes("@gmail.com"));

console.log(noGmail);
// ["abc@naver.com", "jkl@naver.com", "mnp@creamer.com"]
  • forEach() : array의 각 element 마다 제공된 function 실행 (새로운 array를 만들지는 않음)
const emails = [
        "abc@naver.com",
        "def@gmail.com",
        "ghi@gmail.com",
        "jkl@naver.com",
        "mnp@creamer.com"
];

emails.forEach(argument => {
    console.log(argument.split("@")[0]);
})

// abc 
// def 
// ghi 
// jkl 
// mnp 
  • map() : array의 각 element 마다 제공된 function 실행하고 새로운 array 생성
const emails = [
        "abc@naver.com",
        "def@gmail.com",
        "ghi@gmail.com",
        "jkl@naver.com",
        "mnp@creamer.com"
];

const emailName = emails.map(argument => argument.split("@")[0])

console.log(emailName);
// ["abc", "def", "ghi", "jkl", "mnp"]
  • Object Return
const emails = [
        "abc@naver.com",
        "def@gmail.com",
        "ghi@gmail.com",
        "jkl@naver.com",
        "mnp@creamer.com"
];

// implicit return => 을 사용하기 위해서는 바로 {}가 나오면 안된다. 때문에 ()로 감싸준다.
const emailObj = emails.map((argument,index) => ({username: argument.split("@")[0], points: index}));

console.table(emailObj);

implicit return => 을 사용하기 위해서는 바로 {}가 나오면 안된다. object를 return하기 위해서는 ()로 감싸준다.

Default Values

function sayHi(aName) {
    return "Hi " + aName;
}

console.log(sayHi("Terry"));
// Hi Terry 

console.log(sayHi());
// Hi undefined 
  • default values 설정하기 (string, function, object 등을 default values로 설정 가능)
function sayHi(aName = "Stranger") {
    return "Hi " + aName;
}

console.log(sayHi());
// Hi Stranger 
  • default value를 arrow function으로 변경하기
const sayHi = (aName = "Stranger") => "Hi " + aName;

console.log(sayHi());
// Hi Stranger 





© 2020.11. by creamer

Powered by CREAMer