[JavaScript] 변수
변수
var a = 1;
위와같이 변수는 저장된 값을 식별할 수 있는 이름이다.
위의 코드에서 a는 ‘변수 이름’이다. 변수 이름을 ‘식별자(identifier)’라고도 한다.
변수의 값을 저장하는 행위를 ‘할당(assignment)’이라고 하고,
그 값을 읽어오는 것을 ‘참조(reference)’라고 한다.
단, 주의 할 점은 식별자는 값이 아닌 메모리의 주소를 기억하고 있다.
변수 선언
변수를 사용하기 위해서는 반드시 선언이 필요하다.
변수는 var, let, const로 선언할 수 있다.
어떤 것으로 선언하느냐에 따라 변수의 유효범위가 달라진다.
var는 전역범위, 함수범위이며, let과 const는 블록범위이다.
- var (재선언o, 재할당o)
업데이트하고 다시 선언 할 수 있다.
- let (재선언x, 재할당o)
업데이트 할 수 있지만 다시 선언 할 수 없다.
- const (재선언x, 재할당x)
업데이트하거나 다시 선언 할 수 없다.
let과 const는 var와 다르게 변수 재선언이 불가능하다.
var javascript;
// javascript라는 이름을 가진 변수를 선언한것이다.
// 메모리에 변수 이름을 등록하고 저장할 메모리 공간을 확보한다.
// 이때 undefined으로 할당되어 값이 초기화된다.
// 값의 할당은
javascript = 'very easy!';
//또는
var javascript = 'vary easy!';
변수 호이스팅
코드가 실행하기 전 변수, 함수선언이 해당 스코프의 최상단으로 끌어올려진 것 같은 현상을 말한다.
자바스크립트 엔진은 코드를 실행하기 전 실행 가능한 코드를 형상화하고 구분하는 과정을 거친다.
이 과정에서 모든 선언을 스코프에 등록한다. 그래서 선언문보다 참조/호출이 먼저 나와도 오류없이 동작한다.
console.log(javascript);
var javascript;
// 결과 : undefinde
반면 let과 const는 블록범위로 제한이 되어있다.
function test() {
if(window) {
let study = 'javascript';
}
console.log(study);
}
test();
위와 같은 오류가 발생한다. var와는 다르게 자신의 블록 외엔 접근을 못한다.
const도 역시 let과 접근범위는 같다. 하지만 변수 재할당이 불가능하다.
const study = 1;
study = 2;
위와 같은 오류가 난다.
이렇게 let은 데이터를 변경해야 할때 사용하면 되고, const는 데이터를 바꿀 필요가 없을 때 사용하면 된다.
변수 명명 규칙
- 첫글자에는 숫자를 쓸 수 없다.
- 예약어(http://www.w3bai.com/ko/js/js_reserved.html)는 사용할 수 없다.
- 대소문자가 구분되며 길이 제한이 없다.
- 특수문자는 _와 $만 쓸 수 있다.
변수명을 잘 작성하면 가독성과 유지보수에 유리하기 때문에 규칙을 정해 놓는것이 좋다.
변수 표기법
- 카멜 표기법(Camel Case)
처음 단어의 첫글자는 소문자로, 그 다음 단어 첫글자는 대문자로 시작하는 표기법
낙타의 등같다고 해서 Camel이라는 이름이 붙여졌다.
var javascriptStudy = 'javascript study';
⇒ 상수가 아닌 변수, 함수 이름에 사용
- 파스칼 표기법(Parscal Case)
카멜 케이스와 다르게 단어의 처음 단어의 첫글자를 대문자로 시작하고 그 다음 단어의 첫글자도도 대문자로 시작한다.
var JavascriptStudy = 'javascript study';
⇒ Class나 객체 정의시 사용
- 스네이크 표기법
모든 단어가 소문자이고 단어와 단어 사이마다 언더바(_)가 들어간다.
언더바(_)가 뱀처럼 보인다 하여 스네이크라는 이름이 붙여졌다.
var javascript_study = 'javascript study';
⇒ database의 데이터를 정의할때 사용