자바스크립트에서는 let
이라는 키워드를 사용하여 변수를 생성한다.
만약 다음과 같이 선언했다면,
let message = 'hi!';
우리는 message를 입력하여 hi!라는 값을 불러올 수 있다.
let을 선언한 후, 변수의 이름과 값을 저정하면 메모리에 해당 값이 저장이 된다.
마치 우리가 박스에 물건을 넣는 것과 비슷하다고 이해하면 쉽다.
message라는 박스를 만들고 그 안에 원하는 물건 즉 입력 값을 넣을 수 있다. 이때 넣었던 값은 다른 값으로 교체가 가능하다.
let message = 'hi!';
message = '안녕!';
-> 콘솔창에서 확인해보면, message는 더이상 'hi'가 아닌 '안녕'으로 바뀐 것을 알 수 있다.
👀 같은 변수를 여러 번 선언하면 error가 발생하므로 주의하자!
let message = 'hi!';
let message = '안녕!';// <- SyntaxError
변수의 이름을 자유롭게 지을 수 있지만 몇 가지 주의할 점이 있다.
1. 변수명에는 오직 문자
, 숫자
, $
, _
만 사용할 수 있다.
2. 숫자로 변수명을 시작할 수 없다.
3. 예약어를 사용할 수 없다.
-> reserved name(예약어)은 이미 자바스크립트 언어 프로그램에서 사용되고 있기에 새로운 변수명으로 사용이 불가하다.
-> MDN 참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Lexical_grammar
👻 var를 쓰면 안되는 이유 👻
var를 사용해서 변수를 선언할 수 도 있다. 하지만 다음과 같은 이유로 사용을 지양해야한다.
1. var hoisting : var는 변수를 선언한 위치에 상관없이 값을 제일 위로 올린다.
-> 즉 선언하기도 전에 값이 나타난다는 것이다.
2. no block scope : block scope 밖에서도 값이 호출된다.
primitive는 string
, number
, bigint
, boolean
, undefined
, symbol
가 해당된다. 그리고 모든 primitive(원시값)은 변형이 불가하다!
변수는 수정이 가능하다며?!
변수는 새로운 값으로 바꿀 수 있지만, 이미 선언한 값은 객체, 배열, 함수와 달리 변형할 수 없다.
->🖐 greeting은 여전히 'Hello'이다!
여기서 퀴즈!! 🤔현재 score의 값은 무엇일까요??
4?? nono
값을 새로 지정하지 않는 한 여전히 3입니다!!
업데이트를 원한다면 꼭=
잊지마세요~~
수정이 가능한 값과 달리 고정된 값은 const
라는 키워드로 선언된다.
const로 선언한 값은 수정하려하면 error가 나타난다.
const는 바꿀 수 없다는 점에서 다음과 같은 장점이 있다.