//log my lifestyle

[JavaScript] 드림코딩 : let, const, var 본문

Web/Javascript

[JavaScript] 드림코딩 : let, const, var

zici 2021. 9. 5. 18:14

let ,constant

변수를 지정할때 let과 const로 선언할수있다. (ES6부터 적용됨)

let const
그림은 어플리케이션마다 쓸수있는 메모리가 제한적으로 할당됨을 보여준다.
mutable data immutable data
값을 변경할수있음
읽기,쓰기 가능
한번 선언한 변수는 고정값을 가짐
읽기만가능
const를 쓰는 이유:
(1) 보안상 해킹 오류방지

(2) 하나의 어플리케이션 프로세스안에서 다양한 스레드(thread)가있고,
      스레드에 동시에 접근하여 변경가능,이는 위험여지가있으므로 변하지않는값을 사용

(3) 변경할필요가없을때 const를 써서 작업시 실수 방지

var

let 은 ES6부터 추가되었는데 ES6이전에는 var를 사용하였다. var는 변수를 지정하는데 큰 단점이 있어 사용을 지양

단점1. hoisting

변수를 선언하고나서 값을 선언하는게 정상적이지만

선언도하기전에 값을 할당할수있고, 할당하기전에도출력할수있다.(출력하면 undefined으로 뜬다)

이러한 현상을  hoisting이라고 부른다.  

hoisting :어디에 선언하는지 상관없이 항상 제일위로 선언을 끌어올려준다는 의미

 

단점2. has no block scope

var는 블록스코프가 없다. 블록안에서 변수를 선언해도 밖에서 값을 출력할수있게 되는데

 체계가없어지므로 위험부담이 생길수있게된다.

 

block Scope와 global scope

  • block Scope 
      { }안에서 선언한 변수는 블록스코프를 가진다. 블록 밖에서는 기능을 못한다.
  • global scope 
    반대로 블록밖에서 지정된 변수는 글로벌스코프를 가진다. 어느곳에서나(블록안이나 밖) 적용가능하다

    글로벌변수들은 어플리케이션실행부터 끝날때까지 메모리에 탑재되어있기때문에 최소한으로만 쓰는것이좋다.

let a = 24;
{
let b = 3;
}
console.log(a); //24
console.log(b); //ReferenceError: b is not defined

//a는 전역스코프를가져서 호출되지만 b는 블록스코프를 가지기때문에 함수밖에서호출시 에러가난다.

 

 

 

 

아래 영상을 보고 공부내용 정리한글입니다.

Reference

https://youtu.be/OCCpGh4ujb8