03. 변수(variable)
with 양지은
변수(variable)란?


변수는 변할 수 있는
값을 담는 공간이다. 가방
안에 필통
을 넣었다가 빼고책
을 넣었다가 다시 알림장
을 넣는다고 가정해보자. 그 상태에서 가방
은 변수
이고 필통
과 책
, 알림장
은 값이 되는 것이다. (JavaScript 변수는 Variable의 var
을 따와 사용한다.)
var bag = "필통";
bag = "책";
bag = "알림장"
console.log(bag); // "알림장"
또한 변수는 키워드(Keyword)
, 식별자(identifier)
, 자료형(DataType)
으로 나뉜다.
var a = 2;
// var keyword
// a identifier
// 2 DataType
let c = 2;
let c = 3;
위와 같이 영문 이름
을 잘 알고 있으면 디버깅(오류 고치기)
할 때 유용하다. 내가 어디서 오류 났는지 쉽게 파악할 수 있기 때문에 반드시 알아둬야 한다.
여기서 헷갈릴만한 점이 또 있다. JavaScript 변수는 변수 타입이 딱히 없다는 것이다.
var, let, const
(나중에 설명할 상수 키워드) 와 같이 키워드만 선언
해주고 자료형(Data type)
을 다르게 주면 된다.
var age = 20;
var name = "이름";
// JavaScript
자료형(Data Type) 이란?
앞에서 얘기한 자료형(Data type)
이란 그럼 무엇일까?

쉽게 말해 컴퓨터가 처리하는 자료의 형태를 일컷는다. var a = 2;
라는 값은 Number
로 var b = "two"
라는 값은 String
으로 처리한다는 말이다.
JavaScript 변수 타입은 쉽게 원시 (Primitive)
타입과 객체 (Object) 타입
으로 나뉘지만 책에서는 기본형
과 복합형
으로 설명했기 때문에 기본형과 복합형으로 설명을 덧붙이려고 한다.
var num = 1;
var str = "one";
var boo = "true";
var undi = undefined;
var nu = null;
// 기본형
쉽게 말해 기본형
은 하나의 자료형(Data type)
만 변수에 담기는 것
이고, 복합형
은 두 개 이상의 자료형(Data type)
이 담기는 것이다.
기본형
숫자형(Number type)
var num = 2; // Number Type
※ /
는 나눈값
이고 %
는 나머지 값
이다.
문자형(String type)
var str = "two"; // String Type;
str = 'three'; // '' 로 해도 된다.
" "
와 ' '
의 차이
document.write('<span class="num">', 2018, "</spen>");
document.write("<span class='num'>", 2018, "</spen>")
console.log("I'm apple");
// 때에 따라 자유롭게 사용하면 된다.
논리형(Boolean Type)

var age = 12;
age > 11; // true
age > 13; // false
Undefined vs null
var a;
typeof a; // undefined
var b = null;
typeof b // object
null
을 object
로 인식하는 것은 JavaScript
의 대표적인 오류 중 하나다. 원래 null
이 NULL 포인터
였기 때문에 object
로 인식한다. 자세한 부분은 여기서 참고하자.
undefined
는 정의되지 않았다는 뜻
으로 값이 할당되지 않았다는 뜻
이고, null
은 값이 유효하지 않다
는 말이다. 얼핏보면 '없음'
이라는 의미로 비슷해보이지만 둘은 다르다.
var a; // undefinde (정의되지 않음)
var a = undefined; // undefinde (변수에 정의 했는데 undefinde)
위와 같이 '없음'
을 나타내기 위해 undefined
를 사용할 시 혼동이 올 수 있으므로 null
을 사용하는 것이 좋다.
그렇다고 '없음'
이라는 의미를 나타내기 위해 null
을 중구난방 사용하는 것은 좋지 않다. 객체의 경우 속성
이 부재할 시
그냥 속성을 작성하지 않는다.
(자세한 것은 객체 참조)
var obj = {
name : "이름",
age : null // x
};
var obj = {
name : "이름"
}; // o
복합형
var arr = [1, "two", true, false, undefined, null];
앞서 말했듯, Array
와 Object
는 여러가지 자료형(Data type)
을 넣을 수 있다. 자세한 부분은 06
과 07
을 참조하자.
연산자 (위에 참조)
var a+b;
1+2; // 3
var c = 3;
c-1; // 2
var d = 10;
var e = 2;
d%e; // 0
var f = 20;
var g = 4;
var ff = f/g;
ff; // 5
연산자
는 기본 사칙연산
을 일컷는다. 증감 연산자
는 a++
는 나중에
++a
는 먼저 증가
가 (혹은 감소가) 된다는 것이 특징이다. 비교 연산자
는 == 보다 === 가 더 엄격하다.
논리 연산자
var a = 5;
var b = 6
a > 5 || b > 7; // false
a > 5 || b === 6; // true
a > 4 || b > 5; // true
논리 연산자
OR (||)
은 둘 중 하나만 true
여도 true
다. AND (&&)
는 둘 다 true
여야 true
다. NOT (!)
은 원래 값에서 반대되는 값
을 출력한다.
ES6
let
, const
는 ES6 이후 생긴 문법이다.
var a = 10;
a = 20; // 20
var a = 25 // 25
let b = 30;
let b = 35;
// Uncaught SyntaxError:
// Identifier 'b' has already been declared
b = 40; // 40
const c = 50;
c = 55;
// Uncaught SyntaxError:
// Identifier 'c' has already been declared
const c = 60;
// Uncaught TypeError: Assignment to constant variable.
var
은 전역변수 처럼 계속해서 재할당이 가능한 반면, let
은 한번 선언한 변수 이름(식별자)에 다른 값 재할당 하면 에러가 뜬다. const
는 상수 (변하지 않는) 여서 한 번 선언한 값에 다른 값을 선언하지 못 한다. (자세한 부분 Scope 참조)
Last updated
Was this helpful?