변수는 코딩에 가장 기초 개념으로 변수를 통해 우리는 데이터를 편리하게 저장하고 불러올 수 있다. 우리가 흔히 이야기하는 변수는 사실 수학적인 개념에서 왔으나 프로그래밍에서의 변수와는 차이가 있다.
수학에서의 변수: 정해지지 않은 임의의 값
프로그래밍에서의 변수: 값을 저장하는 공간(메모리), 이름이 붙은(labeled) 값
이처럼 프로그래밍에서의 변수는 값을 저장하는 하나의 상자로 이해하는 것이 편하다.
그렇다면 변수의 선언은 어떻게 이루어지는가?
let name; // 변수의 선언
name = 'lee'; // 변수의 할당
위 예시와 같이 let(const)을 작성하면 옆에 오는 이름으로 하나의 새로운 변수가 선언된다. 이렇게 선언된 변수에는 '='을 통해서 무엇인가를 할당할 수 있다. 여기서 중요한 점은 자바스크립트의 세계에선 '='는 '같다'라는 의미가 아닌 '할당'을 의미한다는 점이다. '같다'를 의미하는 비교 연산자는 '==='(엄격 비교) 혹은 '=='를 사용한다.
let name = 'lee'; // 선언과 할당이 동시에
이렇게 선언과 할당을 동시에 작성할 수도 있다.
표현식이란 인터프리터가 값으로 평가하는 구문으로 쉽게 말하면 결과를 내기 위한 평가의 대상이다.
let pi = 3.141592;
pi * 5 * 5; // 표현식
pi와 같은 변수는 이렇게 표현식의 일부를 구성할 수 있다.
변수는 또 다른 변수에 담길 수 있다.
let areaOfCircle = pi * radius * radius;
// camelCase 변수명 사용
이러한 변수의 이름은 camelCase를 사용하여 지으며, 띄어쓰기 대신 다음 글자의 첫 부분만 대문자로 써주는 방식이다.
자바스크립트에는 다음과 같은 5가지 기본 타입이 존재한다.
숫자형(number) = 1, 2 // 변환함수 Number( )
문자형(string) = '안녕' // 변환함수 String( )
불린형(boolean) = true, false // 변환함수 Boolean( )
undefined // 타입이자 값
null // 비어있음
여기에 더해 ES6 부터 symbol
타입이 추가되었다.
기본 타입에 해당하지 않는 나머지 타입은 모두 객체로 배열, 함수 등이 모두 포함된다.
객체(object) = 배열(array), 함수(function), 정규표현식
같은 숫자를 입력하더라도 컴퓨터가 어떤 결과를 반환할지는 데이터 타입에 따라 달라진다.
1 + 1 = 2
'1'+'1' = '11'
위와 같이 숫자 1과 1을 더하면 2가 반환되지만, 문자열 '1'을 더하면 '11'이라는 결과가 반환된다. 그렇기에 타입이란 컴퓨터가 어떤 방식으로 데이터를 다루어야 할지에 대한 하나의 가이드가 될 수 있다.
자바스크립트는 '느슨한 타입 체크 언어'로, 변수를 선언할 때 타입을 미리 정하지 않고 어떤 형태의 데이터를 할당하느냐에 따라 해당 변수의 타입이 결정된다. 이러한 언어의 장점과 단점은 JS자문자답_1. 타입의 종류와 결정방식 에서 정리하였다.