자바스크립트에서는 변수를 사용하여 특정한 값(데이터)을 저장할 수 있습니다.
변수는 변경 될 수 있는 값 입니다. 뭐가 변하느냐? 바로 데이터가 변합니다.
let myVariable = 5;
👉 let
이라는 키워드를 사용하여 myVariable
이라는 변수를 선언하고, 5
라는 값을 할당 한 것.
let myVariable = 5;
는 자바스크립트 엔진(자바스크립트 코드를 해석하는 도구)에게
"야, 이제 데이터 저장공간을 마련해! 이름은 myVariable로 하고!" 라고 말하는 거에요.
이런 것을 변수를 선언한다라고 표현합니다.
그리고 위에서 알 수 있듯이 변수(variable)에 값을 할당할 때엔 대입연산자(=)를 사용합니다.
대입연산자는 말 그대로 오른쪽 항에 있는 값을 왼쪽에 있는 변수에 대입하는 역할을 합니다.
변수를 선언하자마자 값을 대입하는 것을 초기화한다고 표현합니다.
let myVar = 5;
let myNum = myVar;
// 5를 변수 myVar의 값으로 대입합니다.
// 그 후에 myVar를 myNum의 값으로 대입합니다.
자바스크립트 변수 선언 가능한 키워드는 오직 let
하나 뿐 입니다. const
도 있지만 얘는 우선 잠시 논외로.. (사용하지 않는다는 의미가 아닙니다)
짧게 설명하자면, const
는 선언함과 동시에 값을 할당하게 되면 그 뒤로는 절대 값을 변경 할 수 없는 키워드 입니다.
👉 옛날에는 var
를 썼었는데 지금은 쓰면 안 돼요.
😮 왜요?:::::::::
대부분의 프로그래밍 언어는 변수를 선언하고 나서 값을 할당하는 것이 일반적인데, 자바스크립트 var
는 선언을 하기도 전에 값을 할당 할 수 있었습니다. 게다가 값을 할당하기도 전에 출력이 가능했다고 합니다 (헐). 원래 이런 식이라면 에러가 뜨는게 정상인데.. var
로 작성한 것은 에러 조차 안 떴다고 합니다. 🥶
이러한 현상을 var hoisting
이라고 합니다. 때문에 요즘은 사용하지 않는 추세라고 하네요.
var hoisting
: 어디에 선언했느냐에 상관 없이 항상 제일 위로 선언을 끌어 올려주는 것
변수는 처음 선언된 경우 초기 값으로 undefined
, 즉 정의되지 않은 값을 갖습니다.
let a;
console.log(a) // --> return undefined
이와 같이 a
라는 변수를 선언 했으나, 아무런 값을 할당하지 않은 경우에 console.log
를 찍어 보면, undefined
가 출력되죠. 🥶
이 말은 곧, 변수를 선언하는 것과 값을 대입하는 것은 별개 라는 뜻이 됩니다.
선언된 변수가 특정한 값을 갖기 위해서는 대입연산자를 사용해 꼭 그 값을 대입해주어야 합니다.
🌟 한 번 선언된 변수는 다시 선언할 필요 없이 값만 대입해주면 됩니다.
let a;
let b;
let c;
console.log(a + b + c) // --> return NaN
🌟 NaN : Not A Number
, 각 변수에 값이 할당되지도 않았을 뿐더러 애초에 숫자 데이터도 아니라 연산을 할 수 없기에 console.log(a + b + c)
를 찍으면 숫자가 아니다 라는 의미의 NaN
이 출력 됩니다.
- 대소문자 구문
변수이름, 함수이름, 연산자 모두대소문자
를 구분합니다.
따라서myName
과MyName
은 다른 변수입니다.
- 변수 이름을 정할 때, 첫 번째 문자는 반드시
글자
나밑줄(_)
,달러기호($)
중 하나 입니다.
- 두 번째 문자부터는
글자
,밑줄
,달러
,숫자
중에서 자유롭게 쓸 수 있습니다.
- 변수이름, 함수이름 등
camelCase(카멜케이스)
표기법으로 쓸 것.let ohMyGod; let iLikeCoffee; //camelCase(카멜케이스) 표기법
snake_case 표기법
도 있지만 잘 사용하지 않습니다.
변수이름에-
는 사용할 수 없으므로,_
를 사용한 것!let oh_my_god; let i_like_coffee; //snake_case 표기법
1. undefined
선언은 됐지만 아직
value
가 할당되지 않은 경우
2. null
'빈 값(blank)'을 의미하는데
null
은 사용자가 의도적으로 준value
입니다.
그래서undefined
와는 다르게 자바스크립트가 자동적으로null
이란 값을 줄 수는 없습니다.
👉 '값이 없다' 는 점에서 null
과 undefined
가 비슷한 것 같아 보여도 둘은 같지 않습니다. 왜일까요?
let name; // undefined
let name = null; // null
console.log(null == undefined); // true
console.log(null === undefined); // false
엄격일치연산(===
) 은 value
뿐만 아니라 type
도 같아야 true
가 나옵니다.
그러면 null
과 undefined
의 type
은 어떤 타입 일까요?
타입을 알아보기 위해서는 typeof
연산자를 사용 하면 됩니다.
console.log(typeof null); // object
console.log(typeof undefined); // undefined
null
의 type
이 object
가 나왔습니다. 왜일까요?
👉 null
은 위에 설명한대로 값이 없음(blank)
을 의미하는 null
이 value
로 할당 된 상태이기 때문입니다.