728x90
1. 변수란 무엇인가?
- 하나의 값을 저장하기 위해 확보한 메모리 공간 자체, 그 메모리 공간을 식별하기 위해 붙인 이름
- 프로그래밍 언어에서 값을 저장하고 참고하는 메커니즘, 값의 위치를 가리키는 상징적 이름
- 할당(대입) : 변수에 값을 저장하는 것
2. 식별자
- 변수 이름 => 식별자
- 어떤 값을 구별해서 식별할 수 있는 고유한 이름 , 메모리 주소에 붙인 이름
- 식별자는 값이 아닌 메모리 주소를 기억함
- 변수, 함수, 클래스 모두 식별자
- 네이밍 규칙 준수 필요. 선언(declaration)에 의해 자바스크립트 엔진에 식별자의 존재 알림
3. 변수 선언
- var, let, const 키워드 사용
- 변수 선언의 단계 => 두가지 단계가 동시에 진행 됨
- 선언 단계 : 변수 이름을 등록. 자바스크립트 엔진에 변수의 존재 알림
- 초기화 단계 : 값을 저장하기 위한 메모리 공간 확보. 암묵적으로 undefined를 할당해 초기화
- 변수 초기화 : 변수가 선언된 이푸 최초로 값을 할당하는 것. 다른 애플리케이션이 사용한 쓰레기 값을 비워 주기 위함
4. 변수 선언의 실행 시점과 변수 호이스팅
console.log(score); //undefined
var score; // 변수 선언문
- 자바스크립트 코드는 인터프리터에 의해 한 줄 씩 순차적으로 실행
- cosole.log 실행 시점에 변수 선언 실행되지 않았기 때문에 참조 에러 발생할 것 같지만 undefined가 잘 할당 됨
- 이유?
- 변수 선언은 소스코드가 한 줄 씩 순차적으로 실행되는 시점(런타임)이 아니라 그 이전 단계에서 먼저 실행 되기 때문
- 소스코드의 평과 과정 거침(실행하기 전 준비물 준비 개념) -> 한 줄 씩 순차 실행
- 자바스크립트 엔진은 변수 선언 위치가 어디든 다른 코드보다 먼저 실행
- 변수 호이스팅?
- 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징
5. 값의 할당
var score; // 변수 선언
score = 80; // 값의 할당
var score = 80; // 변수 선언과 값의 할당 (단축 표현)
- = 사용
- 단축표현을 사용하여도 변수 선언과 값의 할당을 2개의 문장으로 나누어 각각 실행
- 변수 선언 -> 소스코드가 순차적으로 실행되는 시점인 런타임 이전에 먼저 실행
- 값의 할당 -> 소스코드가 순차적으로 실행되는 시점인 런타임에 실행
console.log(score); // undefined
var score; // 변수 선언
score = 80; // 값의 할당, var score=80을 했어도 결과는 동일!
console.log(score); // 80
6. 값의 재할당
- 변수에 저장된 값을 다른 값으로 변경.
- var 로 선언한 변수가 undefined 로 초기화 되는 것도 재할당이라 볼 수 있음
- 상수 : 한번 정해지면 변하지 않는 값
7. 식별자 네이밍 규칙
- 코드 전체의 가독성 높이기 위해 카멜 케이스, 파스칼 케이스 사용
// 카멜 케이스(camelCase) - 변수, 함수 이름
var firstName;
// 스네이크 케이스(snake\_case)
var first\_name;
// 파스칼 케이스(PascalCase) - 생성자 함수, 클래스 이름
var FirstName;
// 헝가리언 케이스(typeHungarianCase)
var strFirstName; //type + indentifier
var $slem = document.getElementById('myId'); // DOM 노드
var observable$ = fromEvent(document, 'click'); // RxJs 옵저버블
참고 : 모던 자바스크립트 Deep Dive
728x90
'TIL > JavaScript' 카테고리의 다른 글
[딥다이브] 6장 데이터 타입 (0) | 2022.04.20 |
---|---|
[딥다이브] 5장 표현식과 문 (0) | 2022.04.20 |
[딥다이브] 3장 자바스크립트 개발 환경과 실행 방법 (0) | 2022.04.17 |
[딥다이브] 2장 자바스크립트란? (0) | 2022.04.17 |
[딥다이브] 1장 프로그래밍 (0) | 2022.04.17 |