애플리케이션은 데이터를 다룬다
복잡해보여도 데이터를 입력(input) 받아 처리하고 결과를 출력(output)하는 것이 전부
변수는 데이터를 관리하기 위한 핵심 개념
컴퓨터는 연산과 기억을 수행하는 부품이 나워져 있다.
CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다
메모리 셀 하나의 크기는 1바이트(8비트)이며, 1바이트 단위로 데이터를 저장, 읽는다
메모리 주소를 통해 값에 직접 접근하는 것은 치명적 오류를 발생시킬 수 있다
자바스크립트는 직접적인 메모리 제어를 허용하지 않는다
값이 저장될 메모리 주소는 코드가 실행될 때 메모리의 상황에 따라 임의로 결정된다.
메모리 주소를 통해 값에 직접 접근하려는 시도는 올바른 방법이 아니다.
변수(variable)
값을 저장하기 위해 확보한 메모리 공간 자체 or 공간을 식별하기 위해 붙인 이름
값을 저장하고 참조하는 메커니즘으로, 값의 위치를 가리키는 상징적인 이름
변수에 값을 저장하는 것을 할당(assignment(대입, 저장))
변수에 값을 읽어 들이는 것을 참조(reference)라 한다.
식별자(identifier)
변수 이름을 식별자라고도 한다.
식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말한다.
값이 저장되어 있는 메모리 주소와 매핑관계를 맺으며, 매핑 정보도 메모리에 저장
식별자는 값이 아니라 메모리 주소를 기억하고 있다
선언(declaration)에 의해 자바스크립트 엔진에 식별자의 존재를 알린다
변수 선언
값을 저장하기 위한 메모리 확보(allocate)하고 변수 이름과 주소를 연결해서 저장 준비
var, let, const 키워드 사용
var의 단점 : 함수 레벨 스코프를 지원해서 의도치 않게 전역 변수가 선언될 수 있다
undefined : 자바스크립트는 변수 선언에 의해 빈 공간의 메모리를 확보 할때, undefined로 초기화 함
- 선언 단계 : 변수를 등록해서 변수의 존재를 알린다
- 초기화 단계 : 암묵적으로 undefined를 할당해 초기화 함
변수 선언의 실행 시점과 변수 호이스팅
변수 선언은 런타임(runtime)이 아니라 그 이전 단계에서 먼저 실행된다
JS는 변수 선언이 어디에 있든 상관없이 먼저 실행됨 / 어디서든 변수를 참조 할 수 있다
변수 호이스팅(variable hoisting)
- 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 JS의 고유 특징
값의 재할당
변수에 저장된 값을 변결할 수 없다면 변수가 아니라 상수(constant) = const
재할당 해서 기존에 있던 불필요한 값들은 가비지 콜렉터에 의해 자동 해제됨
네이밍 컨벤션(naming convention)
가독성 좋게 단어를 구분하기 위한 규칙
camelCase : 변수나 함수
PascalCase : 생성자 함수, 클래스
snake_case
typeHungarianCase
# 나만의 quiz
- JS에선 변수 선언을 위한 여러가지 키워드가 있는데,
이 중 함수 레벨 스코프를 지원해서 의도치 않게 전역 변수가 선언될 위험이 있는 키워드는?
- var - JS에서 변수 선언은 런타임 이전 단계에서 실행된다.
이처럼 변수 선언문이 코드의 선두로 끌어 올려진 것 처럼 동작하는 특징을 무엇이라 하는가?
- 변수 호이스팅
'JavaScript > Deep Dive' 카테고리의 다른 글
06 데이터 타입 (0) | 2024.09.13 |
---|---|
05 표현식과 문 (0) | 2024.09.13 |
03 자바스크립트 개발 환경과 실행 방법 (0) | 2024.09.13 |
02 자바스크립트란? (0) | 2024.09.13 |
01 프로그래밍 (0) | 2024.09.13 |