[WIL] javaScript 언어 학습

이현동·2023년 1월 22일
0

WIL

목록 보기
2/9

이번 주 정리

이번 주는 Javascript를 배우기 전에 코어자바스크립트를 읽으면서 jacaScript에 대해 심화적으로 배워보는 시간을 가졌습니다.
그동안 코딩을 하면서 썼던 javascript의 데이터 타입, 변수가 선언되는 과정, 내가 쓴 코드들이 어떻게 실행이 되는 것인지 알아보았습니다.
익숙하지 않고 많이 어려운 것 같아서 이해하기 어려워서 반복적으로 보는 것이 가장 좋을 것 같습니다. 이번 글에서는 간략하게 정리해보려고 합니다!

함수와 객체, 메소드

함수와 메서드의 차이

함수와 메서드의 차이는 보통 함수는 '개발자가 미리 정의한 동작을 수행하는 코드 뭉치'이고, 메서드는 '객체의 프로퍼티에 할당된 함수'라고 합니다.
함수는 자체로 독립적인 기능을 수행하는 반면, 메서드는 '자신을 호출한 대상 객체에 관한 동작을 수행하는 것' 입니다.
하지만 자바스크립트에서 함수와 메서드의 가장 중요한 차이는 어떤 함수를 객체의 프로퍼티에 할당한다고 해서 그 자체로 무조건 메소드가 되는 것이 아니라 객체의 메소드로서 호출할 경우에서만 메서드로 동작합니다. 메서드로서 호출하지 않으면 함수로 동작하게 됩니다.

데이터 타입

javaScript 데이터 타입

javascript에는 기본형과 참조형이 있습니다.
기본형에는 Number, String, Boolean, Null ... 등이 있고
javascript에서 참조형에는 Array, Function, Date, ... 등이 있습니다.

  • 기본형 데이터와 참조형 데이터는 변수를 할당하는 과정에서 차이가 발생합니다.
    기본형은 변수 영역에서 식별자를 할당 → 데이터 영역에 값을 할당 → 데이터 영역에 할당한 값의 주소를 식별자에 준다.

  • 참조형은 변수 영역에서 식별자를 할당 → 객체의 변수(프로퍼티) 영역을 따로 할당하고 그 주소를 식별자에 할당 → 값을 객체의 변수(프로퍼티)영역에 식별자를 할당 → 데이터 영역에 값을 할당하고 그 주소를 객체의 변수 영역에 있는 식별자에 할당

얕은 복사 깊은 복사

얕은 복사 깊은 복사에 대해서 아주 간단하게만 요약한다면,
중첩 객체를 복사해서 할당했을 때, 얕은 복사는 원본 객체안에 있는 내부 객체의 값 또한 바꾸는 것이고, 깊은 복사는 원본 객체안에 있는 내부 객체 또한 새로운 주소값으로 할당해서 원본 객체를 바꾸지 않는 것입니다.

실행 컨텍스트

실행 컨텍스트는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체입니다.
js코드를 실행하게 되면 실행 컨텍스트들이 콜 스택에 쌓여집니다. 가장 위에 쌓여있는 컨텍스트와 관련 있는 코드들을 실행하는 식으로 전체 코드의 환경과 순서를 보장합니다.

js코드들이 실행되면 lexical environment에서 environmentRcord에 현재 컨택스트와 관련된 코드의 식별자 정보들이 저장되게 됩니다. javascript 엔진이 코드들을 쭉 스캔하면서 선언한 변수들을 먼저 수집하기 때문에 마치 변수를 끌어올리는 듯한 현상이 발생합니다. 이 현상을 "호이스팅"이라고 합니다.
변수 수집을 완료한 다음에는 실행할 때, environmentRecord에서 식별자를 검색하고 a에 할당된 값이 있다면, 그 값을 사용하게 됩니다. 만약 없다면 outEnvironmentReference에서 a를 검색해 봅니다.

이번주에는 꽤 어려운 내용들을 다룬 것 같다. 특히 실행컨텍스트에 대해서는 추가적인 정리가 필요할 것 같다.


참고자료

코어자바스크립트, 정재남 지음

profile
https://hdlee.dev

0개의 댓글