Notice
Recent Posts
Recent Comments
Link
반응형
공부혜옹
[JavaScript_modern deep dive] 변수 본문
최근 면접준비를 위해 modern deep dive를 읽으며 js 기본 개념부터 탄탄히 하기위한 공부를 다시 하고있다
modern deep dive 포스팅은 무언가를 설명하기 보다 책을 읽으며 노션에 정리한 부분을 기록한다
1. 변수
1-1) 변수는 값이 아닌 메모리의 주소를 기억하고 있다
- result = 30 의 경우 30이 저장되어있는 메모리의 주소 공간을 result라는 이름으로 부르겠다는 뜻이다.
- result를 호출할 경우 result에 해당하는 메모리 주소를 찾아가 그곳에 저장되어있는 값을 참조한다
1-2) 변수 선언은 값을 저장하기 위한 공간을 확보한다는 개념이다
- 선언 후 할당을 안해주었다면 undefined로 초기화 된다
- undefined는 js의 원시타입(primitive 타입)이다
- JS에서 var키워드는 여러 단점이 있다.가장 대표적인것이 블록레벨 스코프를 지원하지 않고 함수레벨을 지원하기때문에 의도치않게 전역변수가 선언된다는것
1-3)호이스팅
console.log(score); //1
var score;//2
1번줄 코드는 reference error를 발생시킬거라고 생각하지만 그렇지 않다
JS는 런타임에서 코드 실행시 인터프리터에 의해 한줄씩 순차 실행되는데 모든 선언문은 런타임 이전 소스코드평가과정에서 미리 실행되기 때문이다
1-4) 변수선언과 할당을 따로 실행된다 총 2번
console.log(score); //undefined
var score = 100;
console.log(score); //100
의 경우 선언과 할당을 동시에 하는것 처럼 보이지만 선언은 런타임 전, 할당은 런타임 후에 실행된다
1-5) 변수 재할당시 이미 확보된 메모리 공간이 아닌 새 메모리 공간에 저장한다
재할당을 할때마다 값이 지워지고 새 값이 삽입되는것이 아닌 새로운 메모리 공간을 확보하고 값을 저장된다 따라서 메모리내에는 이전 값들이 식별자가 할당이 안된채로 남아있다. 이런 불필요한 값들은 가비지 콜렉터가 메모리 해제를 하지만 그 시점이 언젠지 예측할 수 없다 (개발자가 메모리에대해 명명할 수 없다)
1-6) 변수, 함수는 카멜케이스 그 외 생성자 함수, 클래스이름은 파스칼케이스
반응형
'공부합시다 > JavaScript' 카테고리의 다른 글
[JavaScript_modern deep dive] 연산자 (0) | 2022.10.03 |
---|---|
[JavaScript_modern deep dive] 스코프 (0) | 2022.10.03 |
[JavaScript] ArrowFunction VS Function (0) | 2022.07.19 |
Parameter VS Argument (0) | 2022.07.19 |
[JavaScript] 자바스크립트 비동기 처리 과정 (0) | 2022.07.03 |
Comments