zkvn99

[JavaScript] 변수 본문

Language/JavaScript

[JavaScript] 변수

zkvn1103 2022. 11. 12. 22:59

변수 - 하나의 값을 저장하기 위해 확보한 메모리 공간, 그 메모리 공간을 식별하기 위해 붙인 이름

즉 값의 위치를 가리키는 이름

 

Name = "minwook"; // 문자열은 따옴표로 묶고, 세미콜론 생략할 수 있으나 쓰는 게 좋음 

Age = 24; // Age (변수 이름, 식별자라고도 함)

 

변수 사용

 

변수는 특수문자를 제외한 문자와 숫자, $와 _만 사용 // const My_birthday = "1999-07-16"; , let _ = 'a'; , let $ = 10;

첫 글자는 숫자가 될 수 없다. // let 1a = '1a'; 불가능

예약어는 사용할 수 없다. // let let = 100; , let class = "class"; 불가능

되도록 상수는 대문자로 선언 // const MAX_SIZE = 110; 

변수명은 읽기 쉽고 이해할 수 있게 선언 // let guestNumber = 1;

=> 변수명이 긴 경우 주로 camelcase(낙타 등 모양)로 작성 // longVariableName = "변수명";

 

상수 - 한번 정해지면 값이 변하지 않음, 따라서 const 사용

 

변수 선언 - var , let , const 를 사용 ES6에서 let, const가 도입되기 전까지는 var만 사용

let - 변할 수 있는 값 선언 (재선언 x, 재할당 o)

const - 변하지 않는 값 선언 (재선언 x, 재할당 x)

var - 한번 선언된 변수를 다시 선언할 수 있음 / 선언하기 전에 사용할 수 있음 - 호이스팅 (재선언, o, 재할당 o)

 

let name; // 변수 선언
name = ‘Mike’; // 값 할당

var age; // 변수 선언
age = 30; // 값 할당

const gender = 'male'; // const는 선언과 동시에 할당해주어야 함

 

var name = 'minwook';
console.log(name); // minwook

var name = 'lee'; // 재선언
console.log(name); // lee
let name = 'minwook';
console.log(name); // minwook

let name = 'lee'; // 재선언
console.log(name); // error : Identifier 'name' has already been declared (이미 선언됨)

 

console.log(name); // undefined
var name = 'minwook';  // var 로 값 할당할 경우 console.log가 위에 있어도 호이스팅으로 인해 name이 정상 출력

 

let num = 1;
num = 2; // 재할당

 

변수의 생성 과정 - 선언 , 초기화 , 할당

var

1. 선언 및 초기화 단계

2. 할당 단계

 

let

1. 선언 단계

2. 초기화 단계

3. 할당 단계

 

const

1. 선언 + 초기화 + 할당

 

var : 함수 스코프 (함수 내에서 선언한 변수만 지역변수) // var는 주로 사용하지 않음

let, const : 블록 스코프 (블록 내에서 선언한 변수는 지역변수) 

 

자바스크립트는 변수 선언이 어디에 있든 상관없이 다른 코드보다 먼저 실행함 - 호이스팅

호이스팅 : 스코프 내부 어디서든 변수 선언은 최상위에 선언된 것처럼 동작

 

let, const도 호이스팅 가능 var처럼 작동하지 않는 이유

=> Temporal Dead Zone ( let, const는 영향을 받음 ) 줄여서 TDZ는 선언 전에 변수를 사용 못하게 함

TDZ는 코드를 예측할 수 있게하게 하며, 잠재적인 버그를 줄여줌

 

 

'Language > JavaScript' 카테고리의 다른 글

[JavaScript] 배열  (0) 2022.11.25
[JavaScript] 객체  (0) 2022.11.20
[JavaScript] 함수  (0) 2022.11.19
[JavaScript] 자료형  (0) 2022.11.17