기본부품 - kimchunyong/basic_javascript GitHub Wiki
프로그래밍 언어의 핵심 요소
- a = 1.5;
- b = "hello";
- c = a + b;
- d = a * 2;
- 주소
프로세스 메모리의 특정 위치를 가리키는 번지 수
- 값
프로세스 메모리에 기록된 데이터
- 타입
값이 구성된 방식(숫자인지 텍스트인지 등...)
- 이름
특정 주소를 가리키는 소스코드 상의 심볼
- 로직(연산자 및 제어문, 함수)
CPU에 산술 명령을 내리거나, OS와 상호작용하거나, 코드의 분기나 반복을 제어
변수와 주소값
프로그래밍 언어에서 주소를 가리키기 위한 이름을 변수라고 합니다. 변수는 메모리 상의 특정한 주소를 가르킨다. 변수에 값을 할당하는 것은 변수가 가리키는 주소 공간에 값을 저장하는 것입니다.
예시 | 설명 |
---|---|
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+1 | x += 1, x += “hello” |
-= | x = x-1 | x -= 1 |
*= | x = x*2 | x *= 2 |
/= | x = x/2 | x /= 2 |
%= | x = x%2 | x %= 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) |
&& | AND | true && true (true), true && false (false) |
|| | OR | true || true (true), true || false (true) |
타입 캐스팅(형 변환)
서로 다른 타입 간에 연산이 일어날 때는 ### 타입 캐스팅(Type Casting) 또는 형 변환이라고 하는 연산이 내부적으로 일어납니다. 예를 들어 3 + “abc” 같은 경우는 Number 3 이 String "3"으로 변환 되고 “3"+"abc” 연산이 일어나 “3abc” 가 됩니다. 가능한 형 변환이나, 형 변환시 어떤 타입을 따를지에 대한 우선 순위 등은 언어별로 차이가 있을 수 있습니다. Node.js는 형 변환에 너그러운 언어입니다.
예시 | 결과 |
---|---|
true+"abc" | “trueabc” |
!"" | true |
"7"*3 | 21 |
"ab"*3 | NaN |
"ab"*3 | NaN |
타입 연산자
연산자 | 설명 | 예시 |
---|---|---|
typeof | 값의 타입을 String 값으로 | typeof true (“boolean”), typeof xyz (“undefined”) |
instanceof | 값이 특정 타입에 속하는지의 Boolean 값 (뒤에서 다시 다룸) | [] instanceof Array (true) |