
출처 : 코팅앙마 자바스크립트 기초강좌 내용을 정리한 글입니다.
https://www.youtube.com/watch?v=KF6t61yuPCY
기본 방식입니다.
function sayHello(){
console.log('Hello');
}
sayHello()
이름이 없는 함수에 변수 선언해서 함수를 할당하는 것입니다.
let sayHello = function(){
console.log('Hello');
}
sayHello()
바로 호출 타이밍입니다.
sayHello()
function sayHello(){
console.log('Hello');
}
이렇게 바꿔도 동작합니다.
위에서 아래로 읽으면서 동작하는 인터프리터 언어인 자바스크립트에서 어떻게 저런게 가능할까요?
console.log를 사용하면 아래와 같이 에러가 출력됩니다.
.png)
그렇다면 sayHello는 어떻게 동작된걸까요?
이것은 자바스크립트 내부 알고리즘 때문입니다.
자바스크립트는 실행 전 초기화단계에서 코드의 모든 함수 선언문을 찾아서 생성해둡니다. 즉, 눈으로 볼 땐 생성 전이지만 함수를 사용할 수 있는 범위는 코드 위치보다 위로 올라갑니다. 이를 호이스팅이라고 합니다.
let sayHello = function(){
console.log('Hello');
}
sayHello()
코드에 도달해야만 생성되기 때문에 생성 이후에만 사용할 수 있습니다.
함수 선언문이 더 자유롭게 코딩할 수 있지만, 어느것은 사용하든 딱히 상관없습니다.
let add = function(num1, num2){
return num1 + num2;
}
👇
let add = (num1, num2) => {
return num1 + num2;
}
let add = (num1, num2) => (
num1 + num2;
)
let add = (num1, num2) =>num1+num2;
let add = name =>`Hello, ${name}`;
let showError = () => {
alert('error!');
}
let add = (num1,num2) => {
const result = num1 + num2;
return result;
}
선언문이 좀 더 자유롭습니다.
화살표 함수는 ES6 이후에 추가된 기능입니다. ES6 이후 굉장히 활발히 쓰이고 있기 때문에 필수로 알아두어야합니다.