var result = 10 + 20;
// result가 [변수 이름], 변수에 저장된 값 30을 [번수 값]
var, let, const
키워드를 사용함. (let, const 키워드는 ES6에서 도입됨)var score;
<자바스크립트 엔진의 변수 선언 2단계>
1. 선언 단계 : 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알린다
2. 초기화 단계 : 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화 한다.
만약, 선언 하지 않은 식별자를 참조하면 ReferenceError(참조에러)가 발생한다.
console.log(sum); //undefined
var sum; // 변수 선언문
// 변수 선언전이기 때문에 참조에러가 나올거라 예상하지만, undefined가 출력된다.
var, let, const, function, function*, class
키워드로 선언한 모든 식별자는 호이스팅 된다. 모든 선언문은 런타임 이전에 먼저 실행되기 때문.var score; // 변수 선언
score = 100; // 값의 할당
var score = 100; // 변수 선언과 값의 할당
변수 선언과 값의 할당의 실행 시점
console.log(score); // undefined
var score; // 변수 선언
score = 80; // 값의 할당
console.log(score); // 80
변수 선언과 값의 할당을 하나의 문으로 단축하거나 2개의 문으로 나누어도 변수에 undefined 할당되는 것은 변함이 없다.
변수에 값을 할당 할 때에는 새로운 메모리 공간을 확보하고, 그곳에 할당 값 80을 저장하는 것이다.
즉, 메모리 주소 값이 바뀐다.
var score = 50; // 변수 선언과 값의 할당
score = 70; // 값의 재할당
var person, $elem, _name, first_naem, val1;
var 이름; // 권장xx
var first-name;
var 1st;
var this;
var firstname;
var firstName;
var FIRSTNAME;
var x = 3; // x변수의 의미 짐작 x
var score = 100; // score 변수는 점수를 의미
카멜 케이스(camelCase) : 주로 변수나 함수의 이름에 많이 사용
var firstName;
스네이크 케이스(snake_case)
var firstName;
파스칼 케이스(PascalCase) : 주로 생성자 함수나 클래스의 이름에 많이 사용
var FirstName;
헝가리언 케이스(typeHungarianCase)
var strFirstName; // type + identifier var $elem= document.getElementById('myId'); // DOM 노드 var observable$ = fromEvent(document, 'click'); // RxJS 옵저버블