변수(variable)는 값을 저장하기 위한 메모리 공간을 뜻한다.
- 값을 저장하고 저장한 값을 불러올 수 있게 하는 것이
변수(variable)
다.- 변수를 만드는 행위를
선언(declaration)
한다고 표현한다.- 변수를 만드는 방법은
let
,const
,var
3가지가 있다.선언문 + 변수명 식; (ex. let name = "your name")
let total = 50000 + 8000 + 10000 + 9000
let
으로 시작하는 명령을 선언문
이라고 한다.초기화(initialization)
이라고 한다.let string; let string;
let
은 초기화 없이 선언만 할 수 있다.let $string;
let _string;
&
와 _
뿐이다.한글, 한자, 유니코드
는 변수명으로 사용할 수 있다.숫자
로 시작해선 안된다.let let // Uncaught SyntaxError
let var // Uncaught SyntaxError
예약어(reserved word)
는 변수명으로 선언할 수 없다.< let change = "바꿔봐" // 선언문
> undefined
> change = "바꿨다" // 식
> 바꿨다
let
이 없으면 식이기 때문에 대입한 값이 결괏값(ex. 바꿨다)으로 출력된다.let
이 붙으면 선언문이 된다. 문(statement)은 식과 다르게 결괏값이 없다.(undefined)let change = '바꿨다';
change = undefined;
change = null;
undefined
혹은 null
을 대입한다.let string = "hello";
let string2 = string;
console.log(string2) // "hello"
const
는 상수(constant)의 줄임말로, 변하지 않는 수라는 뜻을 갖고 있다.
const value = "상수";
value = "바꿀 수 없습니다." // Uncaught TypeError: Assignment to constant variable
const value = "상수";
const value = "다시 선언할 수 없습니다."; // Uncaught SyntaxError: Identifier 'value' has already been declared;
const value; // Uncaught SyntaxError: Missing initializer in const declaration
초기화? = 선언(declaration)과 동시에 값을 대입하는 것.
const COLOR_RED = "#F00";
const pageLoadTime = /* 웹 페이지를 로드하는데 걸린 시간 */;
pageLoadTime
은 최초 할당 이후 변하지 않는 값이기 때문에 상수로 할당한다.var
는 변수(variable)의 줄임말이다.
var
로 선언하면 선언문 대신 변수문(variable statement)
라고 한다.예전에는 많이 사용한 예약어지만, 자바스크립트 버전 업그레이드가 되면서 현재는
const
와let
을 사용하여 변수를 선언하는 방식을 선언한다.
let user;
let user; // SyntaxError: 'user' has already been declared
var value;
var value; // 에러 안 뜸
var
는 재선언이 가능하다.var let = 30;
var undefined = 30;
var
는 var
를 제외한 다른 예약어를 변수명으로 사용할 수 있다.if (true) {
let test = true;
}
console.log(test); // Error: test is not defined
if (true) {
var test = true;
}
console.log(test); // true (if문 바깥에 있어도 접근할 수 있음)
var
로 선언한 변수는 블록 스코프가 없다. ⭐️
- 함수 스코프이거나 전역 스코프이다.
function sayHi() {
phrase = "hello";
var phrase;
}
function sayHi() {
var phrase;
phrase = "hello";
}
var
선언은 함수가 시작될 때 처리된다. (전역에서는 스크립트가 시작되는 시점에 처리됨)
var
로 선언한 변수는 선언 위치에 상관없이 함수 본문이 시작되는 지점에서 정의된다.
따라서 위 두 식은 동일하게 동작한다.
위 예제처럼 변수가 끌어올려지는 현상을 호이스팅(hoisting) 이라고 한다.
var
로 선언한 모든 변수는 함수의 최상위로 끌어올려(hoisted)진다.
그렇다고 let, const 로 선언한 변수가 호이스팅이 되지 않는다는 것은 아니다! 호이스팅 개념 참고
function sayHi() {
var phrase; // 선언은 함수 시작 시 처리됩니다.
alert(phrase); // undefined
phrase = "Hello"; // 할당은 실행 흐름이 해당 코드에 도달했을 때 처리됩니다.
}
sayHi();
선언은 호이스팅되지만, 할당은 호이스팅 되지 않는다.
while (조건식) {
실행문;
}
while
문은 조건식이 참인 동안 반복해서 실행문을 실행한다.while (true) {
console.log("무한루프");
} // 무한 반복 출력
for (변수 초기화; 조건식; 종료식) {
실행문;
}
for (let i = 0; i < 100; i++) {
console.log("백번 출력");
}
반복문을 멈추고 싶을 때 break문을 활용한다.
let i = 0;
while (true) {
if (i === 5) {
break;
i++;
}
}
console.log(i); // 5
반복문이 특정 조건에서만 실행되기를 원할 경우 continue문을 사용한다.
let i = 0;
while (i < 10) {
i++;
if (i % 2 === 0) {
continue;
}
console.log(i);
}
/*
1
3
5
7
9
*/
switch (조건식) {
case 비교 조건식;
실행문;
}
let value = 'A';
switch (value) {
case 'A':
console.log('A');
}
// A
조건식
과 비교 조건식
이 일치(===)하면 해당 실행문이 실행된다.let value = 'B';
switch (value) {
case 'A':
console.log('A');
break;
case 'B':
console.log('B');
break;
case 'C':
console.log('B');
break;
default;
console.log('아무것도 일치하지 않음');
break;
}
// B
break문
을 함께 사용해야 한다. break문 안 썼을 때 참고default
라는 특수한 예약어를 사용해 만들 수 있다.