-
[js] var 그리고 let, const의 차이점내가 보는 이야기 2022. 9. 13. 17:28728x90반응형
ES6(ES2015) 이전에는 변수를 선얼할 수 있는 키워드가 var가 유일했다.
ES6이후로는 let, const 키워드가 추가되어 변수 선언을 할 수 있게 되었다.
var 는 함수 레벨 스코프이고 let, const는 블럭 레벨 스코프이다.
var로 선언한 변수는 선언 전에 사용해도 에러가 나지 않지만 let, const 는 에러가 발생합니다.
var, let은 변수 선언시 초기 값을 주지 않아도 되지만 const는 반드시 초기값을 할당해야 합니다.
var, let은 값을 다시 할당할 수 있지만 const는 한번 할당한 값은 변경할 수 없습니다.
** var의 경우만 호이스팅 때문에 에러가 나는것으로 판단 할 수 있지만 let, const도 마찬가지로 호이스팅된다.
var의 경우 호이스팅되면서 초기 값이 없으면 자동으로 undefined를 초기값으로 메모리에 할당 하기 때문이다.
console.log(foo); //undefined var foo;그러나 let, const는 호이스팅 되면서 초기값이 없으면 메모리에 할당하지 않으므로 에러를 발생시킵니다.
console.log(foo); // Uncaught ReferenceError: foo is not defined let foo = 1; console.log(foo); // 1**const로 선언한 변수는 가리키고 있는 자체는 변경 불가능 하지만 객체 내의 프로퍼티는 변경 가능 하다.
const name = {first: 'jang', last: 'ms'}; name = 'mm'; // Uncaught TypeError: Assignment to constant variable. /* 에러가 발생하지 않는다. **/ name.first = '장'; name.last = '명수'; delete name.last;##만약 객체 내의 프로퍼티도 변경하지 않으려면 Object.freeze() 메소드를 사용
결론: var는 쓰지 않는게 정신건강에 좋다. 메모리 누수 및 각종 변수 처리 에러 발생
반응형'내가 보는 이야기' 카테고리의 다른 글
[javascript] Callback, Promise 와 Async/Await 차이점 (0) 2022.09.14 [javascript] 클로져(closure)란? (1) 2022.09.13