Hell路 World 삐약-
Do it 자바스크립트 2. 변수(var, let)와 상수(const). 호이스팅, 스코프scope by얄코 본문
자바스크립트

Do it 자바스크립트 2. 변수(var, let)와 상수(const). 호이스팅, 스코프scope by얄코

날으는쏘피 2021. 5. 23.
728x90

출처 : Do it 자바스크립트 + 제이쿼리 입문(이지스퍼블리싱)

 

 

▶ 변수 vs 상수  

변수는 언제든지 변할 수 있는 값, 상수는 고정값을 말한다.

(쉽게 예를 들면 밥만 먹어도 들쭉날쭉하는 몸무게는 변수값, 절대 바뀔리 없는 내 주민등록번호는 상수값)

 

 

 

변수Variables는 변하는 데이터(값)을 저장할 수 있는 메모리 공간입니다. 

 

 

▶변수 선언 

변수를 선언할 때는 다음 기본형과 같이 var 키워드를 변수 명 앞에 붙입니다.

var 변수명;
var 변수명 = 값;

 

 

자바스크립트 표준화버전 ES1(ECMA-262 1st deition)이 1997년 완성된 이래로 기능이 점차 추가되어 현재 ES6가 널리 사용되고 있는데 아직 ES5의 기능만 지원하는 브라우저도 일부 있다고 한다. 그런데 ES6부터는 변수를 좀 더 효과적으로 사용하기 위해 var뿐만 아니라 constlet이 추가되었다. 

 

 


 var    

재선언재할당이 자유로워 편리하게 사용할 수 있지만 그만큼 보안에 취약하다.

재선언? 같은 이름의 변수를 키워드(var)를 사용해 다시 선언하는 것

재할당? 같은 이름의 변수에 새로운 값을 할당하는 것

var name = "변수";
document.write(name + "<br>");
       
var name = "변수재선언"
document.write(name + "<br>");
       
name = "변수재할당"
document.write(name + "<br>");

* 참고로 document.write()는 브라우저 화면에 값을 출력하는 자바스크립트 메소드이다.

 

에러 없이 잘 작동한다. 

 

728x90

 

 

 let     

재할당은 가능하지만 재선언은 불가능하다.

let name = "변수";
document.write(name + "<br>");
       
name = "변수재할당"
document.write(name + "<br>");

 

let의 경우 재할당할 경우 에러 없이 잘 실행되지만 아래와 같이 재선언을 하면 에러가 나면서 전체 코드가실행되지 않는다

 

let name = "변수";
document.write(name + "<br>");
       
let name = "변수재선언"
document.write(name + "<br>");

 

Uncaught SyntaxError: Identifier 'name' has already been declared

name이란 이름의 변수가 이미 선언되어있기때문에 사용할 수 없다는 에러가 뜬다

 

 

 

 const    

constant(변함없는, 상수, 고정값)의 약자로 재선언과 재할당이 모두 안된다. 한마디로 답정너임

const 변수를 재선언할 경우 위와 같이 Identifier has already been declared라는 에러가 뜨고 재할당할 경우 Uncaught TypeError: Assignment to constant variable.라는 에러가 뜬면서 스크립트가 실행되지 않는다. 

 

 

반응형

 

▶ 변수에 저장할 수 있는 데이터의 종류 

문자형(String)
숫자형(Number)
논리형(Boolean)
빈값(null)

* Boolean()매서드는 숫자 0과 null, undefined, 빈문자("")를 제외한 모든 데이터에 대해 true를 반환한다. 

 

 

 

 

※ typeof

코드가 길어지고 다양한 변수를 사용하게 되면 type error가 뜨는 경우가 있는데 그때는 typeof로 변수에 저장된 자료형이 무엇인지 찾을 수 있다.

var name = "변수";
document.write("변수 name의 타입은 "+typeof name+"입니다");

 

 

 

 

 

 

※ 변수와 상수, 호이스팅, 스코프 개념 쉽게 이해하기

 


공부하며 정리하는 초보 개발자입니다.

포스팅 내용에 잘못된 점이나 더 좋은 방법이 있다면 댓글로 알려주시면 감사하겠습니다 :)

728x90
Comments