Will find a way
간단하게 쓰는 글 : 함수 선언문 / 함수 표현식 차이 본문
들어가기 전
자바스크립트를 그냥 저냥 사용하고 있다. 늦었지만 의문이 하나 생겼다.
function sayHello(){
console.log("Hello!!");
};
const sayHello = function(){
console.log("Hello!!");
};
함수를 선언하는 것 / 변수에 함수를 담는 것
볼 땐 무슨 차이인가 싶다
이 둘의 차이는 호이스팅(hoisting)과 스코프(scope)와 같은 차이가 있다.
1. 함수 선언문 (Functional Declaration)
function sayHello() {
console.log("Hello!!");
};
이처럼 함수를 선언하는 것을 "함수 선언문"이라고 한다.
호이스팅 : 전체 코드에서 최상단으로 끌어올려지기 때문에 정의하기 전에 호출이 가능하다.
(즉, 사용보다 먼저 선언할 필요가 없다.)
sayHello();
function sayHello() {
console.log("Hello!!");
};
이렇게 사용할 수 있다.
2. 함수 표현식 (Function Expression)
const sayHello = function () {
console.log("Hello!!");
};
이처럼 변수에 함수를 담는 것을 함수 표현식이라고 한다.
호이스팅은 되지만, 변수만 undefined로 올라가고, 함수는 안 올라간다.
(따라서 정의 전에 호출하면 에러가 발생한다.)
sayHello(); // TypeError: sayHi is not a function
const sayHello = function () {
console.log("Hello!!");
};
이런 차이가 있어서 필요에 따라서 사용하면 되겠다.
'Language > Javascript' 카테고리의 다른 글
XSS 와 CSRF에 대해서 알아보기 (쿠키를 공부하는 과정 중) (0) | 2025.05.01 |
---|---|
canvas를 이용하여 마우스 포인터 따라오는 기능 구현 (VanillaJS) (0) | 2025.04.17 |
<canvas> 태그와 다루는 법 (0) | 2025.04.17 |
객체를 배열로 만드는 메서드 < Object.entries() / keys() / values() > (0) | 2025.04.16 |
[JS] 객체 지향 프로그래밍 (OOP) (0) | 2024.11.28 |