-
변수javascript 2023. 3. 27. 19:54반응형
* 변수 생성 과정 : 1. 선언 2. 초기화(undefined를 할당하는 단계) 3. 할당
* 스코프
- 함수 스코프 : 함수function내에서 선언한 변수만 그 지역변수가 되고 유일하게 벗어날 수 없는 범위가 함수function임 -> var
- 블록 스코프 : 코드 블록(함수, if문, for문, while문, try/catch문 등)에서 선언된 변수는 코드 블록 내에서만 유효하며 외부에서 접근 불가 = 지역변수 -> let, const
/*if문안에서 var로 선언한 변수는 if문 밖에서도 사용 가능함*/ const age = 30; if(age > 19){ var txt = '성인'; } console.log(txt);//성인 /*하지만 var는 함수 스코프이기 때문에 함수 내에서 사용되면 함수 밖에서 사용 불가*/ function add(num1, num2){ var result = num1 + num2; } add(2, 3); console.log(result);//error //--------------------------------------------------------------------------------------------- //if문안에서 let과 const로 선언한 변수는 블록 스코프이기 때문에 if문 밖에서 사용 불가, if문의 { }안에서만 사용 가능 const age = 30; if(age > 19){ let txt = '성인'; } console.log(txt);//error
* var
- 1. 선언과 초기화 동시 2. 할당
- 유연한 변수 선언 가능
- 한번 선언된 변수를 다시 선언 가능
- 선언하기 전에 사용 가능
- var로 선언된 모든 변수는 최상위로 끌어올려져 동작함 = 호이스팅
/*var는 선언하기 전에 사용 가능, 에러를 일으키지 않음*/ console.log(name);//undefined var name; //--------------------------------------------------------------------------------------------- /*호이스팅*/ var name; console.log(name);//undefined : name이라는 선언은 호이스팅이 되지만 Mike라는 할당은 호이스팅이 되지 않음, 즉 name이라는 변수만 올려지고 Mike라는 값은 그 자리에 있음 name = "Mike";* let
- 1. 선언 2. 초기화 3. 할당
- 재선언 불가, 재할당 가능
- 변할 수 있는 값
/*let은 선언하기 전에 사용하면 에러를 일으킴*/ console.log(name);//ReferenceError let name = "Mike"; //--------------------------------------------------------------------------------------------- /* let과 const도 호이스팅이 가능하지만 Temporal Dead Zone때문에 error가 남 let과 const는 할당을 하기 전에 사용할 수 없음 */ console.log(name);//TDZ let name = "Mike";//함수 선언 및 할당 console.log(name);//사용 가능 /*다른 예시*/ //문제 없음 let age = 30; function showAge(){ console.log(age); } showAge(); //문제 있음 let age = 30; function showAge(){ console.log(age);//TDZ let age = 20; } showAge(); //---------------------------------------------------------------------------------------------* const
- 1. 선언 + 초기화 + 할당 동시
- 재선언 불가, 재할당 불가
- 절대로 변하지 않는 값
변수 사용할 때 주의할 점
1. 변수는 문자와 숫자, $와 _만 사용 가능
2. 첫글자는 숫자가 될 수 없음
3. 예약어는 사용할 수 없음
4. 가급적 상수는 대문자 사용
var age; age = 30; let name; name = "Lee"; const gender; gender = "F"; /* var와 let은 괜찮지만 const에서 에러가 남 선언과 동시에 할당을 해야하므로 */반응형'javascript' 카테고리의 다른 글
비교연산자 (0) 2023.03.27 연산자 (0) 2023.03.27 형변환(자동 형변환, 명시적 형변환) (0) 2023.03.27 alert() ,prompt(), confirm() (0) 2023.03.27 javascript 자료형 (0) 2023.03.27