10+20
🔨치명적인 문제: 직접 메모리에 접근하는건 치명적 오류 발생시킬 가능성이 높음
(컴퓨터는 계산하는 공간(cpu)과 저장하는 공간(memory)이 다르다)
=> 해결방안 : 저장하려는 공간을 만들자!
let userName = 'gyeongmi';
🔨 헷갈리는 개념
메모리 주소
를 기억!메모리 주소
에 붙인 이름~)💥 변수를 사용하려면 반드시 선언 필요
var
(전역변수처럼 사용) , let
, const
var score; //변수 선언
1) 선언 단계: 변수 이름 등록해서 자바스크립트 엔진에 변수 존재 알림 (🙋♀️(변수) : 나 만들어질게!)
2) 초기화 단계: 값을 저장하기 위한 메모리 공간 확보, 임시적으로 undefined 값 할당해(넣어서) 초기화한다.
(🙋 : 공간 만들고 undefined 일단 넣어둘게~) -> only var
* 초기화: 변수 선언 이후 최초로 값 할당(보통 0, 1, true, false 넣어둔다) =>근데 var
키워드 할당한 경우만 undefined 값 일단 가짐(값 할당 안해도!)
(참고 : 자바스크립트는 인터프리터
에 의해 한줄씩 순차적으로 수행)
score 변수 선언문이 나중에 나오는데 오류 안나는 이유 : 변수 선언이 런타임(소스코드 한줄씩 읽는 시점)이 아니라 그 전단계에서 실행하기 때문!
변수 호이스팅: 변수 선언문이 코드의 선두로 올라간것처럼(like defer) 동작하는 자바스크립트 고유의 특징(변수의 선언과 초기화를 분리한 후, 선언만 코드의 최상단으로 옮기는것)
🔨주 의
let
: let
변수는 초기화 하기 전에는 읽거나 쓸수 x(단 선언 구문에 초기값 지정안하면 undefined
로 초기화) => 앞선 var
예시처럼 초기화 전에 접근 시도? ReferenceError
// const
마찬가지
let
const
로 선언한 변수도 호이스팅 대상이긴하지만, var
와 달리 호이스팅시 undefined
로 변수 초기화하지 않는다는거!
undefined
/ null
차이
undefined
는 변수를 선언했지만 값이 할당 x
null
은 명시적으로 할당한것(값을 나타내진 않지만 명시적으로 할당했다는 점에서 undefined와는 다름)
=
=
: 우변의 값을 좌변의 변수에 할당해라!let score = 80; //변수의 선언과 값의 할당 동시에 가능
var score = 80; //변수 선언과 값의 할당
score = 90; //값의 재할당
const
(상수)는 값을 재할당 할수 없다!
1. 처음 선언시 score 변수 undefined
로 초기화(값 할당)
2. score = 80
;이라고 값 할당
3. 80
저장되었던 메모리 공간 말고, 다른 메모리 공간 확보한 후 90
저장
-> 필요없어진 undefined
, 80
공간 => 가비지 콜렉터에 의해 메모리가 자동 해제됨(근데 언제일진 모름~)
✅ 추가 사항
let firstName; //camel case
let first_name; //snake case
let FirstName; //pascal case