
어떤 정보에 이름을 붙여 쓰고 싶을 때 사용하는 것
변수를 만드는 행위는 선언(declaration)한다고 표현한다.
변수를 만드는 방법 → let, const, var
이때, let으로 시작하는 명령문 : 선언문
변수를 선언함과 동시에 값을 대입하는 행위: 초기화
// let 변수명 = 식;
> let total = 5000 + 8000 + 10000 + 9000;
< undefined
total = 220000;
변수 선언은 항상 결괏값이 undefined로 출력된다.
undefined는 빈값일 뿐만 아니라, 기본 값의 역할도 한다는 것 명심하기
$와 _를 제외한 사용 x예약어의 종류
await, break, case, catch, class, const, continue, debugger, default, delete, do, else, enum, export, extends, false, finally, for, function, if, import, in, instanceof, new, null, return, super, switch, this, throw, true, try, typeof, var, void, while, with, yield
let change = '바꿔 봐';
change = '바꿨다';
< "바꿨다"
상수란? 변하지 않는 수 (constant) ↔ 변수 (변하는 수)
엄밀히 말하면 상수가 아닌, 변수이지만 let으로 선언되는 변수와는 다른 점이 있다.
const는 상수를 선언하기 위해 사용되며, 재선언, 재할당이 불가하다.
> const value = '상수입니다.';
< undefined
> value = '바꿀 수 없습니다.';
`Uncaught TypeError: Assignment to constant variable.`
// 재선언 불가능
한번 값을 대입하면 다른 값을 대입할 수 없다는 특성 때문에 상수 선언 시 초기화(선언과 동시에 값을 대입하는 것)하지 않으면 에러가 발생한다.
const wrong;
`Uncaught SyntaxError: Missing initializer in const declaration`
단, const에 객체(배열, 함수, 객체 리터럴)가 대입되면 객체 내부의 속성이나 배열의 요소는 수정할 수 있다.
const target2 = ['a', 'b', 'c', 'd', 'e'];
target2 = ['f', 'g']; // 불가능
target2[0] = 'h'; // 가능
💡 상수를 사용하는 이유? 코딩을 하다보면 변수의 값을 수정할 일이 별로 없고, 실수로 값이 바뀌는 경우를 막기 위해 사용한다.
변수(variable)의 줄임말로, 과거에 주로 사용되었으며 다소 어려운 특성으로 인해 const와 let으로 대체되고 있다.
var로 변수를 선언하면 특별히 변수문(variable statement)이라고 한다.
> var variable = '다시 선언할 수 있습니다.';
< undefined
> var variable = '다시 선언할 수 있습니다2.';
< undefined
// let과 다르게 재선언이 가능하다
> var undefined = 'defined';
< undefined
> var let = 'const';
< undefined
// 예약어나 다름 없는 이름을 변수명으로 사용 가능하다
따라서, 변수 선언에는 기본적으로
const를 사용하고, 재할당이 필요한 경우에 한정해let을 사용하는 것이 좋다.const를 사용하므로써 의도치 않은 변수 재할당을 방지할 수 있기 때문이다.
전역 변수: 어디에서나 접근 가능
지역 변수: 함수 내부에서만 접근 가능
let greet = "Hello"; // 전역변수
console.log(greet); // "Hello"
function sayHello(name){
let greet = "Hi"; // 지역변수
console.log( greet + ' ' + name); // "Hi minji"
}
sayHello('minji');
console.log(msg); // "Hello"
전체 코드에서 공통으로 사용되는 변수를 제외하고는 지역 변수를 쓰는 습관을 들이는 게 좋다. 전역 변수가 많아질 경우 관리가 힘들어지기 때문이다.
해당 변수가 영향을 미치는 범위 제한
var는 지역 스코프, 전역 스코프 모두 가능const, let은 지역 스코프로만 가능하다.선언된 var, function을 내부적으로 최상단으로 끌어올린다.
일반적으로는 선언 > 초기화 or 할당 > 코드 사용 순으로 실행해야 하지만, 코드와 선언을 먼저 하고 나중에 초기화/ 할당을 해도 에러가 나지 않는다.
sum (10,20); //사용
//선언
const sum = (num1, num2) => num1 + num2;