[JavaScript_기초]변수

Hannahhh·2022년 6월 24일
0

JavaScript

목록 보기
1/47
post-thumbnail

🔍 변수

데이터를 편하게 다루기 위해 데이터에 붙이는 이름으로, 이름(label)이 붙은 값을 의미한다.
*데이터 보관함(메모리)의 크기는 모두 같다.

  • 선언: let age;
  • 할당: age=16;
    *동시에: let name=kim;

변수명 선언 시, 공백을 사용할 수 없기때문에 보통 단어의 첫 글자를 대문자로 써붙인다. 탁타 등 모양처럼 생겨 Camel Case라고 부른다.

let ateaOfCircle = pi * radius * radius;

변수는 동일한 변수를 이용해 대입할 수 있다.

let sum = 1;
sum = sum + 2;
sum = sum + 3;
sum = sum + 4;

console.log(sum)

결과값: 10

*할당이 없는 변수는 undefined로 뜨는데 정의되지 않았다는 뜻으로, 이 자체로 값이다.



구구단 출력하기

let num = 2;

console.log(num * 1) // 2
console.log(num * 2) // 4
console.log(num * 3) // 6
console.log(num * 4) // 8
console.log(num * 5) // 10
console.log(num * 6) // 12
console.log(num * 7) // 14
console.log(num * 8) // 16
console.log(num * 9) // 18

//num의 값을 바꿔주면서 n단까지 출력할 수 있다.



👀 변수 선언 방식 var, const, let의 차이점

var: 중복 선언 가능, 재할당 가능

var a = 1;
console.log(a) //print 1

var a = 2;
console.log(a) //print 2

const: 중복 선언 불가, 재할당 가능, 선언과 동시에 할당

const a = 1;
console.log(a)

const a = 2;
console.log(a) 

//Uncaught SyntaxError: Identifier 'a' has already been declared

const a = 1;
console.log(a) //print 1

a = 2;
console.log(a) //Uncaught SyntaxError: Identifier 'a' has already been declared

let: 중복 선언 불가,재할당 불가

let a = 1;
console.log(a)

let a = 2;
console.log(a) 

// Uncaught SyntaxError: Identifier 'a' has already been declared

let a = 1;
console.log(a) //print 1

a = 2;
console.log(a) //print 2

코드량이 많아졌을 때 중복선언의 위험이 크기 때문에 var은 잘 사용하지 않는다.
const를 기본으로, 재할당이 필요한 경우 let 을 사용하는 것이 좋다.


✔ 호이스팅

호이스팅(Hoisting)이란, 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미하며, 자바스크립트는 모든 변수 선언 키워드를 호이스팅한다.


var 키워드로 선언된 변수는 선언과 초기화가 한 번에 이루어져 기본적으로 undefined를 할당하는데, 변수 선언문 이전에 접근이 가능하다.

console.log(foo)	// undefined

var foo; 

console.log(foo);   // undefined

var foo = 1; // 값 할당
console.log(foo)	// 1


그러나, let, const 키워드로 선언된 변수는 선언과 초기화가 분리되어 진행된다. 변수가 아직 초기화 되지 않았기때문에 변수 선언문 이전에 접근 시, 참조에러(ReferenceError)가 발생한다. 따라서, 스코프 시작~초기화 시작 지점까지 변수를 참조할 수 없으며 이 구간을 ‘일시적 사각지대(Temporal Dead Zone)’라고 부른다.

console.log(foo)	// Uncaught ReferenceError 

let foo; //초기화

console.log(foo);   // undefined


foo= 1; //값 할당
console.log(foo)   // 1




Reference: 코드스테이츠

0개의 댓글