지금까지 공부 및 프로젝트를 진행하면서 자바스크립트를 사용해왔다. 자바스크립트를 기반으로한 React, typeScript를 사용하면서 자바스크립트의 코어를 이해하지 않고 사용 하려고 하니 쉽지 않았다.
3월까지 시간적으로 여유가 생겨 어떤 것을 공부하면 좋을지 생각하다가 재대로 js 코어에 대해서 공부해보고 한편으로는 머신러닝을 같이 공부하면 좋을 것이라고 생각하였다.
arrow function은 기존의 함수를 좀더 간결하게 작성하기 위해서 추가된 문법이다.
그 전에 JS에서는 함수를 object로 취급하기 때문에 변수에 할당이 가능하다. 이를 'First-class function' 이라고 한다. 또한 함수를 선언하는 방법중에서
// 함수에 이름을 정해주고 선언하는 함수를 named function이라고 한다
const sum1 = function sum1(a,b){
return a+b
}
// 함수에 이름이 없는 선언하는 함수를 anonymous function이라고 한다
const sum2 = function(a,b){
return a+b
}
일반적으로 다른 언어의 경우에는 함수를 선언 할 때
function sum(a,b){
console.log(a+b)
}
이런식으로 선언을 한다. 하지만 JS에서는 이렇게 선언을 하게 되면 앞서 var변수에서 호이스팅 문제가 발생하는 것 처럼
함수의 선언에서도 호이스팅 문제가 발생을 한다.
sum(4, 5); // 문제없이 실행됨 호이스팅 발생
function sum(a, b) {
console.log(a + b);
};
따라서 변수안에 함수를 선언한는 것을 선호한다.
함수를 선언하면
const abc = function(a,b){
return a+b
}
이런 형식으로 선언이 되는데 Arrow fucntion을 사용하면
const abc = (a,b)=> a+b //이렇게 짧게 선언이 가능하다
클래스는 관련있는 변수들을 한데 묶어 놓는 컨테이너 역할을 한다. class의 구성으로는 속성값과 메소드가 들어있다.
class Person{
name; //속성(fields)
ager; //속성(fields)
speak(); //메소드(methods)
}
오브젝트는 클래스에 값을 넣어서 생성하는 모든 것을 오브젝트 라고하고 인스턴스라고도 한다.