js-변수 let,const

쁘띠경·2024년 7월 26일

js

목록 보기
23/41

변수를 만드는 새로운 키워드로 재할당은 가능하지만 재선언은 불가능한 변수를 만드는
키워드이다. 그렇기 때문에 var변수처럼 이름이 중복되어 코드의 에러를 발생시킬 일이 없다. Let으로 만든 변수는 호이스팅이 없다. var예약어를 사용한 변수는 선언하기 전에
실행하더라도 이전에 할당되지 않은 자료형인 undefined 값을 가질 수 있다.
이것은 바로 호이스팅 때문이다.
하지만 Let예약어를 사용한 변수는 선언하기 전에 사용할 경우 오류 메세지를
나타낸다.

    [기본형]
    Let 변수명; 또는 Let 변수명 = 값;


이름이 똑같아서 선언 자체를 막아버린 현상이다.
오류를 띄어줘서 var보다 안전하다. 누군가 쓰면 내꺼 혹은 남의 것에 오류가 난 것을 아니까 !!!!!!!

위에 sum=100보면 재할당은 가능하다 !


이름 바꿔주면 가능하다 ! 즉 let은 재선언은 불가능 !


바깥에서 선언되므로 오류가 안 뜬다. 이건 한 번만 쓸 수 있다
아이디 선택자와 비슷하다고 보면 됨 !

  • 또다른 예제


이상하게 값이 나온다 (원래 나오면 안 됨)
y는 변수로 선언한게 아닌데 나옴. y는 undfind로 나옴. 원래는 값이 없다고 오류를 알려줘야하는데...
이건 자바스크립트가 임의로 해석하고 있어서임. 맨 아래 var y는
최상단에서 끌어올려짐 값 아래에 뒤늦게 입력해서 일단 값은 undfind로 설정해놓은거 !!!!이런한 호스팅 땜에 나중에 코드를 겹차게 되면
이상한 곳에 오류가 나게 됨.

그래서 !!!!!!!!!!!!!!!!!!!!!!

let을 써줬더니 바로 오류가 나온다. (이전에 선언된 적이 없었다는 오류를 내줌.)
이거 쓰고 싶으면 먼저 선언부터 해라 !!라고 그래서 훨씬 안전하고,
오류를 찾기 훨씬 쉽다.
이 코드를 consol.log위쪽으로 올리면 오류가 나지 않는다 !


const


오류가 뜨는 것을 볼 수 있다.


이런식으로 여러가지 방법을 했을 때 오류가 난다.


이렇게는 사용해줄 수 있다.
하지만

이미 쓰여진 이름은 앞을 바꿔도 다시 쓸 수 없다.



상수변수는 재선언 재할당이 아예 안 됨.
그리고 !! 선언하는 시점에 무조건적으로 값이 있어야함!!!!!!!!!!
안 그럼 위처럼 오류가 난다.


/상수 변수 currentYear의 값을 가져와서 쓸 수 있다.
currentYear에 20을 더해 Let year에 할당하면 2044가 잘 출력된다
/
let year = currentYear + 20;
console.log(year);

  /*상수변수 안에 배열이  들어있다면 배열 자체는 바꿀 수 없지만 배열 안에 있는 
데이터는 바꿀 수 있다.*/
  const array = [50, "hi", true, null];

  /*2.배열에서 인덱스 번호 1번째 데이터를 꺼내서 let chocolat1에 할당하기 - 가능*/
  let chocolat1 = array[1];
  console.log(chocolat1);

  //3.상수 변수 array 배열안에 있는 인덱스 1번의 데이터 직접 바꾸기 - 가능
  array[1] = "bye";
  console.log(array[1]);
  
  //큰틀을 이렇게 바꾸려고 하면 오류남!!
  array = "안녕하세요"; 

 

2.어레이 안에 있는 값을 빼서(복사해서) 초콜렛으로 갖고오기는 -가눙
3. 어래이 안에 1번째의 재료의 값을 바꾼거임. 바꿔치기(큰 틀은 못 바꾸지만 안의 값은 변경가능)

//array안에는 원래 배열이 들어있는데 배열자체를 지우고 문자열을 넣으려고 하면 오류가

발생한다.

즉, 배열안에 있는 데이터를 바쑤는 것은 가능하나 배열 자체를 다른 값으로 바꾸는 건

불가능하다.


//상수변수 array 배열의 마지막 인덱스에 '마지막거'라는 데이터를 추가함-가능

데이터들을 무슨뜻인지 정해죽고 싶을때의 예제)


이것처럼 원래 김땡떙에서 name만 이땡땡으로 바뀐 것이 보인다.

즉 const는 큰 틀만 안 바뀌면 변경가능함. 이것과 관련된
기능으로는
회원정보를 작업할때 member이란 단어를 쓸 것이다. 그럴때
const를 써주면 member라는 건 보호하고 안의 값을 변경해줄 수 있다.
무언가 지켜줘야 할 값이 있을때 사용한다고 본다.



배열에서 kim꺼내기


odject에서 kim꺼내기


kim에서 park로 바꾸기



변수 member에서 array에 있는 2꺼내기


''는 지금 문자열로 들어가 있기 때문에 ''로 감싸준 문자열로 나타낸거임!
이건 근데 배열 자체가 바뀜 혹시 원본 배열이 유지 된 상태에서 해당 값만
가공하고 싶음 배열매서드를 사용해서 만들어야함.


자바스크립트에서 변수 쓰는 법

자바스크립트는 유연해서 편리한 언어이다.
이렇게 써도 저렇게 써도 자유롭게 문장을 구성할 수 있는 언어이다.
하지만 이런 편리성은 프로그램이 커지면 가독성이나 디버깅을 하기 어렵게 만든다.
자바스크립트 문법은 벗어나지 않으면서 가독성과 디버깅을 하기 쉽도록 변수를 사용할때에는
아래와 같이 사용해야한다.

          1. 전역변수는 최소한으로 사용해야한다.
             -전역변수는 프로그램 어디든 접근할 수 있으므로 편리하게는 사용할 수 있지만
             하지만 예상하지 못 한 곳에서 오류가 발생하는 확률이 높다. 그래서 되도록이면
             전역변수는 최소한으로 사용하는 것이 좋다.-

          2. var 변수는 함수의 시작부분에서 선언한다.
             -var를 이용한 변수는 어디에서 선언하든 상관없지만 내부에서 호이스팅이 생기므로
             오류가 발생할 확률이 높다. 그래서 var변수는 함수 시작 부분에서 선언하는 것이 변수를
             확인하기도 좋고 오류를 줄일 수 있다.

          3. for문에서 카운터 변수를 선언할때 var예약어를 사용하지 않는다.
             -for문 안에서만 사용할 카운터 변수는 그 블록 안에서만 사용할 것이므로
             가끔 var를 이용해서 선언하기도 한다. 하지만 이렇게 선언한다고 해서
             블록 변수가 되는 것은 아니기 때문에 for문에서 사용할때에는
             let를 이용하거나 for문 바깥에서 선언하는 것이 좋다.

                예)
            //블록 바깥에서 var로 선언할경우
             var i;
             for (i = 0; i < 10; i++) {
            자바스크립트코드;
             }
            
            //let을 이용해서 블록 변수로 선언
             for (let i = 0; i < 10; i++) {
            자바스크립트코드;
            }

          4. ES6를 사용한다면 예약어 var보다는 let을 사용하는 것이 좋다. 
             var를 사용한 변수는 재선언할 수 있기 때문에 실수로 같은 변수 이름을 
             다시 선언하더라도 오류가 발생하지 않는다. 
             간혹 여러 사람이 한 프로그램을 같이 작업하다보면 변수 이름이 중복 되면서
             서로의 코드를 망가지게 할 수도 있기 때문에 let을 사용하여 이름의 중복을
             막아 코드 오류를 줄이는 것이 좋다. 
profile
안녕하세요 ! 발전을 위해 매일 도전하는 퍼블리셔 류영경입니다.

0개의 댓글