본문 바로가기

web/js

[JS] 자료형

자바 스크립트는 런타임 시점에 값에 따라서 자료형이 결정되는데 이것을 동적 바인딩 이라고 한다.

그 반대인 정적 바인딩은 컴파일 시점에 자료형이 결정되는 것을 말한다.

   

var : 자바에서의 자료형이다.

var의  scope는 함수내부에 선언된 변수만 지역변수이며 나머지는 모두 전역번수로 간주한다.

따라서 if문이나 for문에서 선언된 var변수는 해당 블록을 벗어나도 사용이가능하다.   

더보기

for (var a = 0; a < 10; a++){}
console.log(a); // 10

var a = 100;
console.log(a); // 100

이런식으로 var자료형은 같은 이름의 변수가 있어도 문법 오류를 일으키는 것이 아니라 값이 수정된다.  

이러한 특징들은 사용자에게 있서 모호함을 주고 프로그래밍을 어렵게 하는 요인이 된다.

그래서 let이나 const 키워드를 사용하는 것이 좋다.

 

let이랑 const는 일반적으로 하는 블록 단위 스코프이기 때문에 사용하는 것이 편리하다.    

 

 

호이스팅

호이스팅이란 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당해 놓는 것을 의미한다.

 var키워드나 함수의 경우 호이스팅되며 초기화까지 진행 되어 선언 위치보다 위에서 사용이 가능하다. 마찬가지로 let키워드나 함수표현식 (let a = function() {})은 호이스팅은 되지만 초기화가 되지 않아서

console.log(a);
let a = function(){
    return 100;
} // ReferenceError: Cannot access 'a' before initialization

이러한 에러메시지가 뜨는 것을 확인할 수 있다.

 

 

 
 

'web > js' 카테고리의 다른 글

[JS] Object.assign  (0) 2023.07.11
[js] for..in 과 for.of의 차이  (0) 2023.07.07
[JS] alert, prompt, comfirm  (0) 2023.06.22