-
var 와 let 둘 중 뭐를 써야 될까??Study/JavaScript 2023. 8. 4. 14:03반응형
자바스크립트를 배우거나 코드를 보다 보면 어떤 코드는 var를 잔뜩 써놓고
어떤 코드는 let을 잔뜩 써 놓았는데,
도대체 이게 뭐냐?? 하실겁니다.
일단은 var 와 let 둘다 변수를 선언할때 쓰입니다.
다만 var보다 let이 좀더 업그레이드 되었다.
고 생각 하심 좋을거 같습니다.
그렇다면 어떤 부분이 업글이 되었는지 궁금해 하실텐데 그전에 먼저 알아둬야 될 지식이
있습니다!
바로 Hoisting(호이스팅)기술 입니다.
보통 코드의 흐름은 위에서 아래로 물이 흐르듯이 차례차례대로 실행이 되는데,
자바스크립트는 실행이 될때 먼저 코드를 훝어서 변수와 함수를 갈고리로 낚아채듯 감아올려(hoist)
최상단에 두고 기억해 뒀다가 변수나 함수를 선언할때마다 메모리에 꺼내서 호출할수 있습니다!
즉, 변수나 함수를 코드 맨마지막줄에 선언했다해도 갈고리로 꽉 찍어 끌어올려 마치 첫줄에 선언한것 마냥 호출 해주도록 해주는 기능입니다!
그런데 말입니다! 이 유용한 Hoisting 기능과 var를 같이 쓰면서 이상한 점을 발견할 수 있습니다.
첫번째 이상한점. 선언을 내멋대로해도 이해해주는 자바스크립트!
console.log(a); a=1; var a; console.log(a);
자바에서는 변수선언을 먼저 하고 나서 값을 할당하는 방식인데, 자바스크립트에서는 할당을 하고 변수를 나중에 선언해도 이해해준다는 사실....
var a=1; console.log(a); var a=2; console.log(a);
자바에서 같은이름의 변수가 있으면 절대 안되지만, 자바스크립트에서는 같은변수에 다른값을 선언했는데도 허용해줌....
다 허용해주면 좋은 기능 아니냐 하시겠지만, 코드가 한두줄일때는 상관이 없는데, 몇천줄 되면 선언이 이리저리 되어 있고, 같은변수에 이값 저값 넣고하면......에러가 나면 도대체 어디에서 에러가 났는지 원인을 못찾는 문제가 발생하게 됩니다.....
두번째 이상한점. 전역변수와 지역변수의 개념이 불분명함!
for(var i=1; i<5 ; i++){ console.log(i); } console.log(i);
자바에서는 for문 밖에 있는 console.log(i) 는 지역변수이므로 출력이 안되는게 맞는데,,, 자바스크립트에서는 허용해줌.
왜?? 자바스크립트에서는 함수만 지역변수로 호이스팅되고 나머지는 다 전역변수로 호이스팅 되기 때문에
for문, if문 안에 선언한 변수도 전역변수를 취급합니다.
이러한 말이 안되는 부분 때문에
"var를 없애고 let을 사용합시다!" 하고 let이라는 변수가 등장!!
그러므로 결론...var대신 let을 되도록 사용해보도록 합시다!
왜냐 저위에 이상한 점을 고쳐서 새로나온게 "let" 변수이기 때문!
반응형'Study > JavaScript' 카테고리의 다른 글
초보자를 위한 웹브라우져에 웹캠 비디오 영상 보여주기 (0) 2024.03.07 초보자를 위한 게시판의 글자색을 바꾸는 기능을 만들어 보자 (0) 2024.02.05 초보자도 쉽게 이해하는 jQuery 문법_태그 및 요소 추가하기_ .wrap() .wrapAll() .html() .text()_(2) (0) 2023.03.26 초보자도 쉽게 이해하는 jQuery 문법_태그 및 요소 추가하기_ .append() .prepend() .before() after()_(1) (0) 2023.03.25 alert창 UI를 바꾸기(sweetAlert 적용하여 예쁜 알림UI사용 하기) (0) 2023.03.22