이전에 변수들에 대해서 공부하는데, 호이스팅이라는 개념을 몰라서 따로 공부해야했다.
호이스팅이 뭘까?
우리가 쓴 코드를 생각해보아야 한다.
자바스크립트의 모듈에서 함수를 생성했을 때, 그 함수는 실제로 작성된 부분에서 생성된게 아니다.
생성단을 모두 위로 올려두고, 그 이후에 아래쪽에서 해당 부분을 만드는 것이다.
이런 방식의 호이스팅에는 몇가지 문제점이 존재한다.
선언된 변수와 함수가 먼저 선언되었기 때문에, 할당되기 전에 사용될 수 있다는 문제점(?)이 존재한다.
이게 왜 문제일까?
어떻게 보면 이점아닐까? 사용이 원할하잖아!!!
- 호이스팅은 선언만 끌어올리고 할당은 끌어올리지 않기 때문에 변수에 실제 값을 할당하기 전에는 undefined로 초기화되어 예기치 못하게 오류가 발생하게 할 수 있다
이렇게 아무것도 없는 값으로 선언되고 사용되는 코드가 좋은 코드일까?
그런 문제 없이 사용될 수 있는 코드가 좋은 코드 아닐까? 싶다.
앞으로는 var 대신 let, const로, 호이스팅에 대비해야 겠다.
그러면 어떻게 해야 호이스팅되지 않고, 원하는 대로 동작하는 모습을 가질 수 있을까?
- 변수선언은 항상 스코프(범위)제일 위에, 초기값을 할당해 사용하기
- 함수 선언문 (function 함수명()) 대신에 함수 표현식을 써보기
- var 대신 let & const사용하기
- use strict를 사용하기
함수 호이스팅을 이용하는 생각보다는, 아직은 명확하게 사용하면서, 호이스팅이 아닌, 필요할 때에는 get메서드를 사용하는 게 더 낫지 않을까 생각된다.
아직 개념이 부족해서 이렇게 생각할 수 있다고도 느낀다.
그럼..twenty thousand...🔥
'JS 공부 > 이론 정리' 카테고리의 다른 글
[JS] 타입스크립트를 내맘대로 써보고 느낀점(함수형에 객체지향 한컵 넣기) (0) | 2023.08.11 |
---|---|
[JS] JS에서 비동기처리가 왜 그렇게 중요할까? (0) | 2023.07.25 |
[JS] axios? 아씨오? (0) | 2023.07.17 |
[JS] var, let, const에 대해서 공부해보자. (0) | 2023.07.17 |