특정한 값을 일시적으로 저장하기 위해 사용
선언(declartion)
선언
은 결괏값이 항상 undefined
로 출력> let 변수명;
> 변수명; // undefined
// 값을 대입하지 않은 변수를 입력하면 undefined가 출력된다.
초기화(initialization)
> let hello = 'hello';
> hello; //'hello'
변수의 이름과 값이 저장되는 위치는 컴퓨터의 메모리
따라서 메모리를 초기화하면 메모리에 저장되어 있던 변수도 같이 사라짐
let strawberry = 'mango'
// 변수명은 strawberry인데 저장된 값이 'mango'이면 사용자가 헷갈릴 수 있음
let c = 'coffe'
// 또한 아무의미 없는 변수명 c를 사용하면 저장된 값이 무엇인지 추정하기가 매우 어려워짐
$
(doller sign)_
(underscore)> let er*ror = 'Nope!'
// Uncaught SyntaxError: Unexpected token '*'
> let 8error = 'Nope!'
// Uncaught SyntaxError: Invalid or unexpected token
let let = 'Nope!'
// Uncaught SyntaxError: let is disallowed as a lexically bound name
let const = 'Nope!'
// Uncaught SyntaxError: Unexpected token 'const'
let class = 'Nope!'
// Uncaught SyntaxError: Unexpected token 'class'
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 isChanged = false; // undefined
// let이 있기 때문에 선언문
// 식과 달리 결괏값이 없고 식의 자리에 사용할 수 없음
> isChanged // false;
// let이 없기 때문에 코드가 '식'이라 대입한 값이 결괏값으로 출력됨
> isChanged = true; // true
undefined
또는 null
대입undefined
대신 null
사용 시 누군가가 의도적으로 빈값으로 변경했다는 것을 인지할 수 있음> isChanged = undefined;
// undefined;
> isChanged = null;
// null
> let string = 'hello, variable!';
// undefined
> let string2 = string;
// undefined
> string2;
// 'hello, variable!'
> let number = 2;
// undefined
> number = number + 2;
// 4
//축약해보기
> number += 2;
// 6
> number **= 2;
// 36;
> number /= 4;
// 9;
> '기이이이이이이이이이이ㅣ인~~~문자열'; // 기이이이이이이이이이이ㅣ인~~~문자열
> '기이이이이이이이이이이ㅣ인~~~문자열'; // 기이이이이이이이이이이ㅣ인~~~문자열
> '기이이이이이이이이이이ㅣ인~~~문자열'; // 기이이이이이이이이이이ㅣ인~~~문자열
> const string = '기이이이이이이이이이이ㅣ인~~~문자열';
> string; // 기이이이이이이이이이이ㅣ인~~~문자열
> string; // 기이이이이이이이이이이ㅣ인~~~문자열
> string; // 기이이이이이이이이이이ㅣ인~~~문자열
const
, let
, var
가 있음const
는 상수(constant)의 줄임말const
는 객체의 내부 값에는 적용되지 않기 때문에 엄밀한 의미에서 상수가 아님const
도 변수라고 부름const
는 초기화 이후 값 재할당이 불가능함> const helloWorld = 'hello world!';
> helloWorld = 'hell world!' // Uncaught TypeError: Assignment to constant variable.
const
는 선언 이후 값 재할당이 불가능하므로 선언 시 초기화 해주어야 함> const helloConst; // Uncaught SyntaxError: Missing initializer in const declaration
> const helloConst = 'hello const!'
var
는 변수(variable)의 줄임말var
말고 let
사용 시 에러가 발생해 이러한 예약어를 변수명으로 사용하는 것을 방지할 수 있음> let undefined = 'defined'; // Uncaught SyntaxError: Identifier 'undefined' has already been declared
> var undefined = 'defined';
> let Infinity = 0; // Uncaught SyntaxError: Identifier 'Infinity' has already been declared
> var Infinity = 0;
> let let = 'const'; // Uncaught SyntaxError: let is disallowed as a lexically bound name
> var let = 'const';