변수와 자료형

자바스크립트에서는 변수선언시 자료형을 지정하지않음
var, let, const 를 이용해서 변수를 선언, 아무값을 담을 수 있음 (특정값 대입시 그 값에 맞춰 자료형이 저장)

자료형 : 변수에 대입되는 값(리터럴)에 따라서 자료형이 결정

  • string (문자열) / number(숫자) / boolean(논리값) / object(객체) / function (함수) / undefined(초기화안된변수)

-> 자료형 확인시 사용하는 함수 : typeof(변수명)

 

* var , let, const 의 차이점

 

1) 변수 선언 방법
  

  - var : 중복 선언 가능 (단점) , 재할당 가능 
  - let : 중복 선언 불가능, 재할당 가능 
  - const : 중복선언 불가능, 재할당 불가능 (상수같은 개념) 

 <button onclick="diffDeclare();">클릭</button>
  <script>
        function diffDeclare(){
            //1) var : 중복선언 가능 (단점), 재할당 가능 
            var userId = "user01";
            console.log(userId);
            
            var userId = "user02";
            console.log(userId);

            userId = "user03";
            console.log(userId);

            console.log("-----------------------");

            //2) let : 중복선언 불가능, 재할당 가능 
            let userPwd = "pass01";
            console.log(userPwd);

            //let userPwd = "pass02";
            //console.log(userPwd);
            
            userPwd = "pass02";
            console.log(userPwd);

            console.log("-----------------------");

            //3) const : 중복선언 불가능, 재할당 불가능(상수같은 개념)
            const userName = "홍길동";
            console.log(userName);

            //const userName = "김말똥";
            
            //userName = "김말똥";
            //console.log(userName);
        }
</script>

>> 콘솔창 결과 

 

2) 스코프 (사용가능 범위) 
 

- var : functional scope == 변수가 선언된 "함수영역"내에서 다 사용가능
- let, const 는 block scope== 변수가 선언된 "블럭{}" 내에서만 사용가능 (자바와 같음)

<button onclick="diffScope();">클릭</button>
<script>
  function diffScope(){
            //1) var : function[al]  scope == 변수가 선언된 "함수영역" 내에서 다 사용 가능
            var name = "홍길동";
            console.log(name);
			scopeTest();
            
            if(true){
                var age = 20;//if블럭 안에서 선언된 변수 
            }
            console.log(age); // age변수가 속해있는 function안이라면 다 사용가능 

            for(var i =0;i<10;i++){
                
            }
            console.log(i); //사용가능 

            console.log("------------------------");
            
            //2) let, const는 block scope == 변수가 선언된 "블럭{}"내에서만 사용가능 (자바랑 똑같음)
            if(true){
                let userId = "user01";
                const userPwd = "pass01";
            }
            console.log(userId);
            console.log(userpWd);
        }

        function scopeTest(){
            console.log(name);
        }
 </script>

>> 콘솔창 결과 


* 변수 선언 위치에 따른 전역변수 / 지역변수 

 - 전역변수 : 특정 함수 밖에 선언된 변수 , 함수내에 var,let,const없이 선언된 변수는 전역변수로 잡힘

-  지역변수 : 함수내에 var,let,const로 선언된 변수

> 지역변수명과 전역변수 명이 중복될 경우 -> 지역변수를 우선시 해서 찾음 
   전역변수에 접근하고자 할 경우 window. | this.으로 접근 가능하지만 let, const는 접근 불가 (undefined)

'Front > JavaScript' 카테고리의 다른 글

JavaScript 06. 배열  (0) 2022.12.19
JavaScript 05. 문자열과 숫자  (0) 2022.12.16
JavaScript 04. 요소 가져오기 (접근하기)  (0) 2022.12.16
JavaScript 03. 데이터 입출력  (0) 2022.12.15
JavaScript 01. 자바스크립트 개요  (0) 2022.12.15
복사했습니다!