[240113] 4장 변수
4장 변수
let const var
- ES6에서 var 키워드의 여러 단점을 보완하기 위해 도입
console.log(score)
var score
- 위 코드가 에러가 발생하지 않음
WHY?
- 변수 선언이 소스코드가 한 줄씩 순차적으로 실행되는 시점, 즉 런타임이 아니라 이전 단계에서 먼저 실행되기 때문이다.
- JS엔진은 소스코드를 한 줄씩 순차적으로 실행하기에 앞서 먼저 소스코드의 평과 과정을 거치면서 소스코드를 실행하기 위한 준비를 한다.
- 소스코드 실행을 위한 준비 단계인 소스코드 평가 과정에서 자바스크립트 엔진은 변수 선언을 포함한 모든 선언문을 소스코드에서 찾아내 먼저 실행한다.
- 그리고 소스코드의 평가 과정이 끝나면 비로소 변수 선언을 포함한 모든 선언문을 제외하고 소스코드를 한 줄씩 순차적으로 실행한다.
var score = 80
- 이렇게 하나의 문으로 단축 표현을 해도 선언과 값의 할당은 2개의 문으로 나누어 각각 실행한다.
값의 재할당
- score = 80 이런식으로 재할당 했을때, 같은 주소값에 할당되지 않음
- 가비지 콜렉터에 의해 메모리에서 자동 해제된다.
언매니지드 언어 vs 매니지드 언어
- c언어 : 언매니지드 언어 (malloc(), free() 같은 메모리 제어 기능 제공) 언매니지드 언어는 메모리 제어를 개발자가 주도할 수 있음, 최적의 성능을 확보할 수 있지만 반대로 치명적 오류를 생산할 수 있다.
- js: 매니지드 언어, 메모리의 할당 및 해제를 위한 메모리 관리 기능을 언어 차원에서 담당하고 개발자의 직접적인 메모리 제어를 허용하지 않는다.
식별자 네이밍 규칙
- 특문을 제외한 문자, 숫자, 언더스코어, $ 달러 기호 포함
- 단 특수문자를 제외한 문자, 언더스코어, $기호로 시작 숫자는 안된다.
- 예약어는 식별자로 사용할 수 없다.
네이밍 컨벤션
- firstName 카멜 케이스 (camelCase)
- first_name; 스네이크 케이스 (snake_case)
- FirstName 파스칼 케이스 (PascalCase)
- strFirstName 헝가리언 케이스 (typeHungarianCase)
Leave a comment