• 티스토리 홈
  • 프로필사진
    chantleman
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
chantleman
  • 프로필사진
    chantleman
    • 분류 전체보기 (330)
      • 프로젝트 (1)
      • react (2)
      • 코딩테스트 (133)
        • lv0 (101)
        • lv1 (10)
        • lv2 (7)
        • lv3 (15)
      • 오류 (14)
      • 리눅스 (5)
      • 닷넷 (2)
      • 자바 (75)
        • spring (7)
      • js (35)
      • 오라클 (39)
        • PLSQL (3)
      • cs (7)
      • 도커 aws (3)
      • 단축키 (3)
      • 나만봐 (0)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • var, let, const
        2024년 08월 08일
        • chantleman
        • 작성자
        • 2024.08.08.:08


            변수 키워드 3종
         
            var     

              함수 범위 유효(function scope)
              재선언, 재할당 모두 가능 >> 개발자 간 오류 발생 가능성이 높아 사용을 지양
              
              - 키워드 생략을 허용 >> 의도치 않은 전역화 발생
              - 중복 선언 허용 >> 의도치 않은 값 변경
              - 호이스팅 적용 대상 >> 선언 이전 참조 가능의 비정상적인 코드 흐름 발생
        (호이스팅: 변수선언 후에 사용해야되는데, 선언 전에 사용해도 에러 발생시키지 않고 실행시킴)      


              협업 중 개발자간 혼란과 코드 복잡도 증가를 보완하기 위한 새로운 키워드 도입(ES6)

         

         


            let

         

              블록 범위(중괄호) 유효(block scope) 
              재선언 불가 >> 이미 사용중인 변수에 다른 값을 할당하여 발생될 예외를 차단
              재할당만 가능
              변수 사용전까지 초기화 되지 않음(선언과 초기화의 분리)

         


            const

              블록 범위 유효(block scope)
              재선언, 재할당 모두 불가

              const는 상수를 선언해야하기 때문에 변하는 값을 지정하면 안됨

              재할당 즉, 변하는 값으로 지정하기 위해서는 const가 아니라 let을 사용

         

         

        const는 무조건 선언을 해줘야함

        const isCheck;

        따라서 위 코드는 안됨. const가 아닌 let으로 바꿔줘야함

         

         


              선언 시 반드시 값이 할당되어야 함 (=초기화하지 않으면 에러 발생)
              보통 대문자를 사용해서 선언 (강제는 아님, ex. const NUM = 7;)

              변하지 않는 값(상수)을 갖는 변수 생성 (=값을 재할당 할 수 없는 읽기전용 변수, 상수 변수)
              *참조타입(Array, Object, Function)에 사용 추천 >> 참조 타입은 주소를 참조하기 때문에 값 변경이 가능

         

        const a = {name:"minsu"};
        
        a = {name:"chulsu"};
        a.name="gildong";

         

        const이기 때문에 a 자체를 바꿀 수 없음

        하지만 {} 안의 내용물은 바꿀 수 있음

        따라서 a의 name이 chulsu로 바뀌지 않지만, gildong으로는 바뀜!

         

         

         

         

         

         

        배열, 리스트는 크기가 계속 변하기 때문에 const가 아닌 let으로 선언해야함

        heap은 원시타입이 아닌 타입들이 저장되는 공간.

        heap은 갑자기 데이터가 커질수도 있는 배열과 객체와 같은 정렬되지 않은 데이터들을 저장할 수 있다는 점이 포인트

        여기서 변경이란 배열에 push로 값을 넣는것이 아닌, 메모리 주소의 변경을 뜻함

        원시타입 값 변경은 값 자체를 변경하는 것이 아니라 주소를 변경하는 것임

         

        let은 메모리의 주소 변경을 허락하지만, const는 메모리 주소를 변경할 수 없음

        따라서 const a = 1처럼 원시타입으로 지정된 것은 변경할 수 없지만

        const a ={name:"췐틀맨"}이면 a.name은 참조타입이라서 변경할 수 있음(a자체가 바뀌는 것은 불가)

        참조타입은 주소를 참조하기때문에 값변경이 가능

         

         

         

         

         

         

         

        728x90

        'js' 카테고리의 다른 글

        random  (1) 2024.08.20
        rest parameter  (0) 2024.08.12
        레이아웃  (0) 2024.08.06
        css2  (0) 2024.08.05
        css  (0) 2024.08.02
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바