화살표 함수
() => {함수} 기존 함수의 축약 버전이다
this 참조가 다름을 고려해야 한다const add = function(파라메타1, 파라메타2){ return 파라메타1 + 파라메타2; }; //전통 함수의 형태 const add = function(파라메타1, 파라메타2) => { return 파라메타1 + 파라메타2; }; //화살표 함수의 형태 const add = (파라메타1, 파라메타2) => 파라메타1 + 파라메타2; //블럭, return을 생략
const point = (파라미터) => ({이름:파라미터}); //key:value를 반환하는 형태 소괄호가 필수! const plus = 파라미터 => 파라미터 + 20; const plus = () => 10+20; //완전축약형태
그저 축약하고 화살표로 표시하는 것이 전부는 아니다락방
prototype, construct가 없다 즉 생성자 함수로 사용이 불가하다
이는 또 즉 ! 가벼운 만큼 단독으로 사용하는 데에 적합하다
함수의 기능만 사용할 때에 유용하다고 할 수 있겠다
arguments 사용 불가 ( 블럭에 있긴 하나 구조를 맞추기 위함 일 뿐 )
동일한 용도에 기능이 추가 된 rest파라메타 사용이 가능하다.
var name = "강경규"; const user = { printName: () => console.log(this.name) }; user.printName();
글로벌 = 윈도우 오브젝트
함수 안에 변수가 없으면 밖에서 찾아 사용하는 것과 같은 원리
그러나 변수가 아닌 스코프를 기준으로 내부에 있는 변수를 사용하는건데..
this가 윈도우 오브젝트를 참조하기 때문에
그 안에서 사용하는 것
작성 된 곳에 따라서 this가 참조하는 위치가 다르다
화살표 함수가 속한 스코프의 this를 화살표 함수에 바인딩 한다
이미 바인딩 된 this의 참조는 바뀌지 않으며
화살표 함수의 this로 사용하게 된다
결론적으로는
prototype을 연계시킨 메서드가 아닌 함수로 사용하는 것을 권한다!
이터레이터이란 반복이란 뜻이나 ! for()문의 반복과는 개념이 다르다
이터레이터(반복)을 하려면 프로토콜(규약)이 필요하다
복잡하다 사실 뭔 소린지 잘모르겠다
결국에는 개발자 편하기 위해 만든 시스템이고
이터레이터 프로젝트를 이터레이터 프로토콜에 맞게 생성하여
확장성을 넓혀서 사용한다는 개념으로 이해해야겠다.
값을 순서대로 생성하는 방법(규약)을 의미한다.
오브젝트가 이터레이터(반복)할 수 있는 구조여야한다 ex) list = [10, 20] 가능 num =100 불가능
Symbol.iterator을 가져야 한다