let은 스코프 단위로 사용 가능
function home(){ var homevar = "homevar"; for(let i =0; i<100; i++){ console.log(i); } //console.log(i); if(true){ let myif= "myif"; } console.log(myif); }
let대신 var이라면 myif가 나오지만 let은 undefined나옴
let은 closure 문제도 해결
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <ul> <li>javascript</li> <li>java</li> <li>python</li> <li>django</li> </ul> </body> <script type="text/javascript"> var list = document.querySelectorAll("li"); for(let i=0; i<list.length; i++){ list[i].addEventListener("click", function(){ console.log(i + '번째 리스트입니다.') }) } </script> </html>
for문의 var를 쓰면 클로저 때문에 '4번째 리스트입니다.'가 나오지만 let을 쓰면 '0~3번째
리스트입니다.'로 나옴(블록 스코프를 참조해서 사용하기 때문)
const는 변하지 않는 상수에 사용
function home(){ const homename = 'my house'; //대문자 표기법 상수야 건들지마 정도의 의미 var HOME_NAME = 'my house'; console.log(homename); //homename = 'your house'; console.log(homename); const homeNumber = [1,2,3,3]; console.log(homeNumber); //homeNumber=['1','2']; console.log(homeNumber); //const를 기본으로 사용한다. //그런데 변경이 될 수 있는 변수는 let을 사용한다. //var는 사용하지 않는다. } home();변경할 수 없는데 변경을 시도 하면 에러가 납니다.
따라서 const는 기본으로, 변경이 될 수 있는 변수는 let var는 거의 사용하지 않는다.const는 재할당이 안되는거지 배열과 오브젝트의 값 변경은 가능function home(){ const list = ["apple", 'orange', 'watermelon']; list.push('banana'); console.log(list); } home(); //immutable array를 어떻게 만들지? //뒤로가기, 앞으로가기 할때 데이터 갖고 있어야할때가 있음 const list = ["apple", 'orange', 'watermelon']; list2 = [].concat(list,'banana'); console.log(list, list2);뒤로가기, 앞으로 가기 할때 데이터를 갖고 있어야 할때는 list2처럼 활용...??이라는데..??저렇게 새로운 녀석을 만들어서 쓰라는거 같은데.....
댓글
댓글 쓰기