Dev/Javascript
-
호이스팅이란?Dev/Javascript 2024. 4. 22. 23:01
호이스팅(Hoisting)이란, var 선언문이나 function 선언문 등을 해당 스코프의 선두로 옮긴 것처럼 동작하는 특성을 말한다. 자바스크립트는 ES6에서 도입된 let, const를 포함하여 모든 선언(var, let, const, function, function*, class)을 호이스팅한다. 아래는 가장 대표적인 예시이다. console.log(a); // undefined var a = 1; 선언하지 않은 것인데도 에러가 발생하지 않는다. helloWorld(); // Hello World! function helloWorld() { console.log("Hello World!"); } 선언을 하지도 않았는데 함수에 접근할 수 있다. 왜 그런 것일까?? 자바스크립트에서의 변수는 선언 단..
-
클로저란 무엇일까? 간결하게 정리Dev/Javascript 2024. 4. 22. 23:00
클로저를 쉽게 이해하기 위해서는 배경지식이 필요하다. 먼저, 실행 컨텍스트를 알아야한다. 함수는 호출 될 때 함수의 실행 컨텍스트가 생성됐다가 실행이 끝나면 실행 컨텍스트가 종료된다. 이때 실행 컨텍스트의 lexical environment에는 함수의 지역 변수의 정보와 이 함수의 상위 스코프의 대한 정보가 들어있다. (scope chain) 클로저란? 함수가 생성 될 때 주변 환경의 상태를 기억하여(lexical environment) 나중에 호출될 때 그 값에 접근할 수 있는 것을 말한다. 예제를 보자면, function makeCounter() { let count = 0; function inner() { count++; return count; } return inner; } let counte..
-
자바스크립트 this 이해하기Dev/Javascript 2023. 4. 14. 02:46
자바스크립트에서 this는 심심치 않게 나온다. this에 대하여 설명하라고 하면, 머리로는 아는데 말로 표현하기가 어렵다. 지금은 사용하지 않지만 예전에 React를 클래스형 컴포넌트로 생성할 때에도 종종 등장했던 부분이다. 그래서 this에 대하여 간략하게 정리하고자 한다. 자바스크립트에서 this는 인스턴스 자신을 가리키는 참조변수이다. 이렇게 말하는 것이 가장 쉽게 이해되는 문장인 것 같다. 다른 언어에서(자바같은)도 this가 존재하는데 자바스크립트에서는 함수를 호출하는 객체에 대한 참조이다. 이것은 자바스크립트에서 객체 지향 프로그래밍을 구현하는 방식 때문이라고 한다. (말 나온 김에 객체지향 프로그래밍에 대해서도 포스팅해야겠다) this는 함수가 호출되는 방식에 따라 값을 다르게 가지게 된다..