1. 함수 표현식
:함수를 변수에 할당한 것
:함수는 sayHi()처럼 호출할 수 있다는 점에서 일반적인 값과는 다르나 본질은 값이다. 따라서 값에 할 수 있는 일ㅇ은 함수에도 할 수 있다.
:함수선언문에는 세미 콜론이 없지만 함수 표현식에선 쓰는 것이 좋다!
-조건문, 반복문, 함수선언문과 같이 중괄호로 만든 코드블럭에는 세미콜론이 붙지 않아도 된다.
하지만 함수 표현식의 경우 함수는 중괄호가 아니라 let 변수 = ...; 구문 안에서의 값의 역할을 한다. 따라서 이러한 구문 ㄲ끝에는 세미 콜론을 붙이는 게 좋다.
=> 함수 표현식에 쓰인 세미콜론은 함수 표현식이기 때문에 붙은 것이 아니라 구문의 끝이기 때문에 붙여진 거!
-함수 선언문은 호이스팅 되어 어디서든 함수를 사용할 수 있지만 함수 표현식은 해당 함수에 도달했을 때만 함수를 사용할 수 있다!
: 함수 선언문의 경우 스크립트 실행 준비 단계에서 함수가 생성되기 때문이고 함수 표현식은 실행 흐름이 함수에 도달해야 함수를 생성하게 된다.
-스코프의 차이
:함수 선언문의 경우 엄격모드에서 코드 블록 내에 위치해있다면 코드 블록 내에서는 어디서든 접근 가능하지만 코드 블록 밖에서는 호출할 수 없다. 이럴 때 함수표현식을 사용하면 코드 블록 밖에서도 함수를 호출할 수 있다.
if(..){
welcome(); //실행ㅇ
function welcome (){
...
}
} else {
function welcome(){
...
}
}
welcome();// 실행x
if(..){
welcome(); //실행x
let welcome = function (){
...
}
} else {
let welcome = function (){
...
}
}
welcome();// 실행ㅇ
=> 알고있는 내용이라고 생각했는데 정제된 글을 보니 헷갈리는 부분들이 있어 추가로 구글링해서 찾게 되었다. 문법에 대해 자세히 알아볼수록 자바스크립트 작동원리에 대한 글이 많이 나와서 이에 대해 공부해보고 싶다는 생각이 든다.
'일상 > Today I Learned' 카테고리의 다른 글
2022.10.10 (0) | 2022.10.10 |
---|---|
2022.10.07 (0) | 2022.10.07 |
2022.09.26 (0) | 2022.09.26 |
2022.09.22 (0) | 2022.09.22 |
2022.09.21 (0) | 2022.09.21 |