1. 할당된 변수의 종류를 알려주는 typeof
console.log와 사용하여 지정된 변수의 타입을 확인할 수 있다.
기본 형태는 console.log(typeof()); typeof로 확인할 수 있는 데이터 타입은 숫자(number), 문자(string), 논리(boolean), 배열(object), 함수(function), 데이터 없음 혹은 지정되지 않음(undefined) 등 다양한 정보로 확인이 가능하다.
2. 복합 할당
같은 값을 가지는 변수에 대해서 한번에 할당을 진행하는 것을 복합 할당이라고 한다.
변수를 선언한 변수 a1~a3에 같은 값을 할당한다면 a1=a2=a3=5+8; 로 할당이 가능하다.
이 경우, 가장 우측의 5+8이 연산되고 a3에 할당된다.
a3에서 a2로 할당이 진행되고, a2에서 a1으로 할당된다.
var a1, a2, a3;
a1=a2=a3=5+8
console.log(a1)
console.log(a2)
console.log(a2)
위와 같이 var 하나로 다수의 변수를 선언할 수 있다.
JavaScript는 변수의 데이터 타입이 존재하지않기 때문에 한번에 다수의 변수를 선언하고, 각자 다른 타입의 데이터를 할당할 수 있다.
3. 기본 연산자
3.1. 5칙 연산자: +, -, *, /, %
연산자는 기본적으로 사칙연산의 기본 규칙과 동일하다.
다만 프로그래밍 언어에서는 %가 추가되는데, 이는 나머지 값을 구하는 연산자이다.
기본적으로 부호를 나타내는 +, - 를 제외하면 이항연산자이므로 계산을 실행할 2개의 항이 필요하다.
곱하기는 *, 나누기는 / 로 표시하는데 일반적으로 수학에서 사용하는 표기와 다르므로 구별하여 사용할 필요가 있다.
기본 연산자를 중심으로 대부분의 연산이 진행된다.
3.2. 제곱 연산자: **
해당 연산자는 제곱의 연산을 처리한다.
2의 3승 = 8 = 2**3 과 같다. 제곱의 계산이기 때문에 제곱 연산자를 이용하여 제곱근 또한 구할 수 있다.
8의 1/3승 = 2 = 8**(⅓)과 같다.
제곱근 연산이 반드시 정수 끝나지는 않기 때문에 연산에 비교적 많은 메모리를 할당하여 사용한다.
3.3. 증감대입연산: a=a+b / a+=b
선언된 변수에 해당 변수의 연산 값을 재할당하는 것을 말한다.
자기 자신과 특정 항과의 연산을 재할당하는 과정을 가지는데 기본적으로 다음과 같은 형태를 가진다.
var num=1;
num=num+2; // == num+=2;
console.log(num); // 출력값 3
증감 대입 연산자를 사용한다면 자신이 편한 방식으로 사용한다..
90년대 이전에는 num+=2; 로 쓰는 것이 선호되었으나 저장 용량의 발달로 유의미한 차이는 없다.
해당 연산자 사용은 5칙 연산은 모두 가능하다. (+, -, /, *, %)
3.4. 단항 연산자: ++, --
단항 연산자는 기본적으로 +1 혹은 -1 을 진행하는 명령어이다.
전위와 후위 연산이 구분된다. 전위 연산은 해당 연산을 먼저 실행하고 값을 대입하지만 후위 연산은 해당 값을 대입하고 연산을 실행한다.
++10--;
// 전위는 ++로 실제 입력되는 값은 11이다. 다만 후위 연산자에 의해 출력값은 10으로 동일하다.
// 재밌는 점은 위의 연산과정에서 출력을 먼저 진행하는 경우라면 실제 출력 값이 상이할 수 있다.
4. 비트 연산자
실제 사용빈도는 낮은 편이지만 데이터의 구조 이해와 추후 사용할 논리연산자와의 차이를 이해하기 위해서 반드시 알아야할 필요가 있다.
4.1. AND 연산자: &
비트(2진법)로 변경한 데이터를 서로 비교하여 일치하는 자릿수를 1로 표기한다.
만약 비교 데이터 사이에 0이 하나라도 있다면 해당 값은 0이된다.
비트(2진법) 연산으로 겹치는 항목에 대해서 표시하기 때문에 결과 또한 2진법으로 출력된다.
4.2. OR 연산자: |
비트(2진법)로 변경한 데이터를 서로 비교하여 두 항 사이에 1개라고 1인 항목을 1로 표기한다.
다만 출력할 때 2진법이 아닌 2진법에 해당하는 숫자를 10진법으로 변경하여 출력된다.
4.3. XOR 연산자: ^ (스쿨르시브)
비트로 변경한 데이터에서 두 항에 대해 서로 ‘다른’ 항목을 1로 할당한다.
00 혹은 11로 같은 경우 0으로 할당하여 계산하다. 최종 출력 결과는 10진수로 표시한다.
5. 시프트 연산자: >>, <<, >>>
시프트 연산자는 비트로 변환한 데이터의 자릿수를 앞 혹은 뒤로 이동시키는데 사용된다.
A<<n 연산은 A의 2승을 n번 실행한 것과 같다.
이는 해당 연산자가 기본 비트 체계를 기준으로 하기 때문이다.
반대로 A>>n는 A의 -2승을 n번 실행한 것과 같다.
int a = 15, b;
b = a<<3;
//15는 2진수로 1111이다. 00001111을 3칸 왼쪽으로 이동하면 01111000이다.
// 해당 숫자는 120에 해당한다. 15를 2의 3제곱과 곱한 결과와 같다.
b= a>>2;
//현재 120인 변수를 오른쪽으로 2이동시키면 00011110이다.
// 해당 숫자는 30이다. 120을 2의 2승으로 나눈 수와 같다.
6. 조건(비교) 연산자: <, >, <=, >=, ==, !=,===, !==(데이터 타입까지 비교)
비교 연산은 두 항 혹은 대상에 대한 크고 작음을 계산하는 과정이다.
var a = b>c; 와 같이 사용할 수 있으며 계산의 결과 값은 ‘논리값’이다.
조건 연산은 컴퓨터에게 해당 정보가 true 혹은 false 중 어떠한 것인지 확인하는 과정이다.
주의할 것은 해당 연산자를 사용할 때 =가 <, > 보다 앞에 와서는 안된다.
var result=5<=5;
console.log(result); /* 결과 값은 true 이다.*/
7. 논리 연산자: &&, ||
논리적인 판단을 진행하는 연산자이다.
인간이 사용하는 논리방식을 컴퓨터에서 구현하기 위하여 고안된 방식으로 참과 거짓 사이의 관계를 통하여 계산의 논리적인 결과를 도출해 낸다.
요약하자면 복잡한 논리법칙을 연산하는데 사용되는 방식을 말한다.
7.1. AND: (조건)&&(조건)
[~이고 ~이다.] 의 논리는 앞선 논리의 두 항이 모두 만족하여야 true인 논리 규칙이다.
모두 참인 경우에만 참이다.
7.2. OR: (조건)||(조건)
[~이거나 ~이다.] 의 논리는 조건이 둘 중 1개라도 만족하면 true인 논리규칙이다.
모두 거짓인 경우에만 거짓이다.
7.3. 연산자의 특징
JavaScript 논리연산자는 논리를 순차적으로 분석하지만, 연산자에 따라 확정되는 논리값이 있다면 나머지 연산을 진행하지 않는다는 특징을 가진다.
풀어서 말하자면 만약 && 연산자에서 첫항이 false라면 나머지 조건과 관계없이 논리값 자체가 false가 된다.
때문에 이하의 항목은 연산하지 않는다.
마찬가지로 || 연산자에서 첫항이 true라면 논리값 자체가 true라면 나머지 항과 관계 없이 논리값이 true이다.
이러한 논리 체계의 특징에 의해 일부 연산이 누락되는 경우가 발생한다.
때문에 논리를 구성할 때 이점을 반드시 주의해야 한다.
result = alert("시작") || (3>5) || (5<7);
result = (5<7) || (3>5) || alert("끝명령");
// 이 경우 끝 명령이 출력되지 않음
8. 삼항 연산자: (조건) ? (참인 경우) : (거짓인 경우);
조건의 충족 요건에 따라 참인 경우와 거짓인 경우의 출력값을 연산하는 연산자이다.
조건이 참인 경우, 개발자가 지정한 ‘참의 값’을 출력한다.
논리 연산자와 다르게 true 혹은 false의 값을 출력하는 것이 아닌, 개발자의 지정 값을 출력하는 특징을 가진다.
var i = 10;
var result = (i>0)? "양수":"음수";
console.log(result);
// (t)? a:b;
9. null 병합 연산
2021년 3월 18일 기준, 가장 최근에 도입된 연산자이다.
데이터 타입의 분류 혹은 확인을 위해 사용한다.
null 혹은 undefined 데이터를 조건으로 하여 값을 출력한다.
기본 형태: a??b;
연산 규칙: a가 null이거나 undefined가 아닌 경우 a, 맞으면 b 값을 출력한다.
삼항 연산으로 표현: (a!=null&&a!=undefined)? a: b;
10. 캐스팅 Boolean
컴퓨터는 0과 1로 정보를 기억하고 계산한다.
참과 거짓에 대해서도 이와 같은 원리로 0 혹은 1로 거짓과 참으로 구분하고 있다.
때문에 일부 데이터를 입력하면 True 혹은 false로 인식하기도 한다.
[0, null, undefined, 공란, 참이 아닌 계산 결과]는 false로 인식하며, [1, 문자(띄어쓰기 포함), 참인 계산 결과]는 true로 인식한다.
이는 JavaScript의 변수 지정이 데이터 타입을 자유롭게 할당하기 때문인데, 이에 연산, 조건문, 프로그램 작동에 원하지 않는 방식으로 오류를 일으킬 수 있다.
이에 따라, JavaScript에서 일부 오류가 발생한다면 해당 값이 true 혹은 false로 인식되는 경우가 아닌지 확인 해야한다.
'JavaScript > 기본 이론' 카테고리의 다른 글
Chapter 06. 입력 값을 취하는 방법 (DOM 기초 1) (0) | 2021.11.22 |
---|---|
Chapter 05. 조건문과 반복문 (0) | 2021.11.21 |
Chapter 03. JavaScript를 구동하기 위한 기초 태그 (0) | 2021.11.19 |
Chapter 02. JavaScript의 변수 (0) | 2021.11.18 |
Chapter 01. JavaScript의 기초 (0) | 2021.11.17 |