기본 부품과 조합

변수, 연산자, 값, 타입과 같은 프로그래밍 언어의 공통적 부품들과 이를 조합하는 방법에 대해 알아봅니다.
변수, 연산자, 값, 프로그래밍 언어, 타입


프로그래밍 언어의 핵심 요소

a = 1.5;
b = "hello";
c = a + b;
d = a * 2;
  • 주소
    프로세스 메모리의 특정 위치를 가리키는 번지 수 (32bit 또는 64bit)


  • 프로세스 메모리에 기록된 데이터

  • 타입
    값이 구성된 방식 (숫자인지 텍스트인지 등)

  • 이름
    특정 주소를 가리키는 소스코드 상의 심볼

  • 로직 (연산자 및 제어문, 함수)
    CPU에 산술 명령을 내리거나, OS와 상호작용하거나, 코드의 분기나 반복을 제어

모든 프로그래밍 언어는 기본 부품과 부품들의 조합으로 이루어져 있습니다. 당장은 Node.js를 배우지만 다른 언어의 구성도 크게 다르지 않습니다. 필요와 원리를 기억하면 새로운 언어를 배우는 일도 간단해집니다.

변수와 주소값

프로그래밍 언어에서 주소를 가리키기 위한 이름을 변수라고 합니다. 변수는 메모리 상의 특정한 주소를 가리키고 있습니다. 변수에 값을 할당하는 것은 변수가 가리키는 주소 공간에 값을 저장하는 것입니다.

예시설명
x = 10;x가 가리키는 곳에 10이라는 값을 저장
y = x;y가 가리키는 곳에 x의 값을 복사해서 저장

값과 연산자

타입과 값

기초적인 값들의 타입입니다.

타입설명예시
Number정수, 소수, 무한대, 잘못된 숫자를 포함한 숫자 그룹77, -100.55, Infinity, -Infinity, NaN (Not a Number)
String문자열을 나타내는 그룹"", "a", "abc", "abc def ghi", 'wyz’, ufc, “"”
Boolean참과 거짓을 나타내는 그룹true, false
(타입이 아님)비어있음을 나타내는 값null
(타입이 아님)빈 값도 아니고 애초에 값이 할당되지 않았음을 나타내는 값undefined

산술 연산자

두 변수간에 산술 연산을 통해 새로운 값을 만들어내는 연산자입니다.

연산자설명예시
+더하기3+10, “hel"+"lo”
*곱하기3*10
/나누기3/10 (0.3)
%나머지13%10 (3)
**제곱3**2 (9)
++증가3++ (4)
감소3-- (2)

할당 연산자

변수에 새로운 값을 할당하는 연산자입니다.

연산자설명예시
=대입x = 10, x = "xyz", x = y+z
+=x = x+1x += 1, x += “hello”
-=x = x-1x -= 1
*=x = x*2x *= 2
/=x = x/2x /= 2
%=x = x%2x %= 2

증감 연산자

Number 타입의 변수의 값을 증가시키거나 감소시킵니다. 할당문과 조합되었을 때 그 증가 감소를 어느 시점에 적용하느냐에 따라 후치 증감, 전치 증감 연산자가 있습니다.

연산자설명예시
x++후치 증가x = 1; y=x++; (y=1, x=2)
++x전치 증가x = 1; y=++x; (y=2, x=2)
x–후치 감소x = 1; y=x–; (y=1, x=0)
–x전치 감소x = 1; y=–x; (y=0, x=0)

비교 연산자

두 값을 비교해 Boolean 타입의 값을 만들어 내는 연산자입니다.

연산자설명예시
==느슨하게 같음1 == 1 (true), 1 == true (true)
===엄격하게 같음1 === true (false)
!=느슨하게 다름true != 1 (false)
!==엄격하게 다름true !== 1 (true)
>, <초과, 미만1 > 0.9 (true), 0.9 < 1 (true)
>=, <=이상, 이하1 >= 1 (true), 1 <= 1="" (true)
(Boolean) ? (A) : (B)삼항연산자(2 > 1) ? “o":"x” (“o”), (10 == 5) ? 1:2 (2)

논리 연산자

Boolean 타입의 값들을 조합하거나 반전시켜 새로운 Boolean 값을 만들어내는 연산자입니다.

연산자설명예시
!NOT!true (false), !false (true)
&&ANDtrue && true (true), true && false (false)
||ORtrue || true (true), true || false (true)

타입 캐스팅 (형 변환)

서로 다른 타입 간에 연산이 일어날 때는 타입 캐스팅(Type Casting) 또는 형 변환이라고 하는 연산이 내부적으로 일어납니다. 예를 들어 3 + “abc” 같은 경우는 Number 3 이 String "3"으로 변환 되고 “3"+"abc” 연산이 일어나 “3abc” 가 됩니다. 가능한 형 변환이나, 형 변환시 어떤 타입을 따를지에 대한 우선 순위 등은 언어별로 차이가 있을 수 있습니다. Node.js는 형 변환에 너그러운 언어입니다.

예시결과
true+"abc"“trueabc”
!""true
"7"*321
"ab"*3NaN
"ab"*3NaN

타입 연산자

연산자설명예시
typeof값의 타입을 String 값으로typeof true (“boolean”), typeof xyz (“undefined”)
instanceof값이 특정 타입에 속하는지의 Boolean 값 (뒤에서 다시 다룸)[] instanceof Array (true)

값과 연산자 조합하기 연습

false || !false; 
true && 3 > 1;
123 % 11;
(10*10 - 5) % 5;
35 == 7*5;
"abc" + 1 + "def" + 35*6 + "ghi" + false;
typeof 123;
a = 5;
a++;
++a;
a -= 10;
a += 30;
a--;
a *= 2; 
b = "abcdefg";
c = b;
bool = (b == "abcdefg");

컬렉션

프로그래밍 언어에는 보통 값들을 한개의 이름 아래에 묶어두기 위해서 Collection이라고 불리는 자료구조들을 제공합니다. Node.js에서는 Array(배열)라고 하는 Collection을 제공합니다. 다른 컬렉션 타입들과 Array에 대한 자세한 내용은 이후에 다룹니다.

// 배열 생성
numbers = [1,2,3];
emptyList = [];

// 값 읽기 (순서가 0부터 시작)
numbers[0]; // 1
numbers[1]; // 2
numbers[2]; // 3

// 값 할당
numbers[0] = 100;

// 값 추가
numbers.push(10);

주어진 배열에 Apple을 더하고 첫번째 요소를 Banana로 바꾼뒤 출력해봅니다.

fruits = ["Grape", "Peach"];
fruits.push("Apple");
fruits[0] = "Banana";
console.log(fruits);
이 강의를 포함한 커리큘럼
저자

김동욱

개발 경력 약 10년, 전문 분야는 웹 및 각종 응용 소프트웨어 플랫폼입니다. Codeflow를 운영하고 있습니다.

2018년 04월 09일 업데이트

지원되지 않는 웹 브라우저거나 예기치 않은 오류가 발생했습니다.