
//실행순서
console.log(score); // 2. undefined
var score; // 1. 변수 선언문
score = 80; // 3. 값의 할당
console.log(score); // 4. 80
프로그래밍 언어는 메모리 관리 방식에 따라 언매니지드 언어와 매니지드 언어로 분류할 수 있다.
C언어 같은 언매니지드 언어는 개발자가 명시적으로 메모리를 할당하고 해제 가능, 메모리 제어를 개발자가 주도할 수 있으므로 개발자의 역량에 따라 최적의 성능을 확보할 수 있지만 그 반대의 경우 치명적 오류를 생산할 가능성도 있다.
자바스크립트 같은 매니지드 언어는 메모리의 할당 및 해제를 위한 메모리 관리 기능을 언어 차원에서 담당하고 더 이상 사용하지 않는 메모리의 해제는 가비지 컬렉터가 수행하며, 개발자가 관여할 수 없다. 개발자의 역량에 의존하는 부분이 상대적으로 작아져 일정한 생산성을 확보할 수 있다는 장점이 있지만 성능 면에서 어느 정도의 손실은 감수할 수밖에 없다.
JS 예약어(reserved word)
await break case catch class const continue debugger default delete do else enum export extends false finally for function if implements* import in instanceof interface* let* new null package* private* protected* public* return super static* switch this throw true try typeof var void while with yield* 식별자로 사용 가능하나 Strict Mode 에서는 사용 불가 (strict mode :* 애플리케이션 내의 잠재적인 문제를 알아내기 위한 도구)**
var firstname;
var firstName;
var FIRSTNAME;// 카멜 케이스(camelCase)*
var firstName;
// 스네이크 케이스(snake)_case
var first_name;
// 파스칼 케이스(PascalCase)*
var FirstName;
// 헝가리언 케이스(typeHungarianCase)
var strFirstName; // type + idenifier
var $elem = document.getElementById('myId'); // DOM 노드
var observable$ = fromEvent(document, 'click'); // RxJS 옵저버블