1. 자바스크립트 데이터 타입
: 타입이란 프로그램에서 다룰 수 있는 값의 종류를 의미
6) 객체형(Object)
: 자바스크립트의 기본 타입
** 객체란?
: 실생활에서 우리가 인식할 수 있는 사물을 프로그래밍에서 메모리에 저장하는 형태,
여러 프로퍼티나 메소드를 같은 이름으로 묶어놓은 일종의 집합체
** 1_데이터타입_객체.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>데이터타입 - 객체</title>
</head>
<body>
<h2>데이터타입 - 객체</h2>
<script>
"use strict";
let dog = {name:'루시', age:10, weight:2.0};
console.log("이름 : " + dog.name);
console.log("나이 : " + dog.age);
console.log("무게 : " + dog.weight);
</script>
</body>
</html>
** 출력결과
2. 자바스크립트의 타입 변환
: 자바스크립트의 변수는 타입이 고정되어 있지 않으며, 같은 변수에 다른 타입의 값을 대입할 수 있다.
예)
let a = 10; // number
...
a = "JavaScript"; // string
1) 묵시적 타입 변환
: 자바스크립트에서 특정 타입의 값을 기대하는 곳에 다른 타입의 값이 오면, 자동으로 타입을 변환하여 사용
** NaN(Not a Number)이란?
: 정의되지 않은 값이나 표현할 수 없는 값이라는 의미,
NaN은 number 타입의 값으로 0을 0으로 나누거나, 숫자로 변환할 수 없는 연산을 시도하는 경우 반환
** 2_묵시적_타입변환.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>묵시적 타입 변환</title>
</head>
<body>
<h2>묵시적 타입 변환</h2>
<script>
"use strict";
let a = 10 + '문자열';
console.log(a);
let b = 3 * 5; // 자동으로 형변환되어 계산이 잘 된다.
console.log(b);
let c = 1 - '문자열'; // NaN(Not a Number) 출력
console.log(c);
let d = "10" - "20";
console.log(d);
</script>
</body>
</html>
** 출력결과
2) 명시적 타입 변환
: 자바스크립트는 자동으로 타입 변환을 사용하지만, 명시적으로 타입을 변환할 방법도 제공(함수로 제공함)
Number() : 문자를 숫자로 변환
String() : 숫자나, 불린 등의 자료를 문자형으로 변환
Boolean() : 문자나 숫자 등의 자료를 불린형으로 변환(값이 있으면 true, 값이 없으면 false)
Object() : 모든 자료형을 객체형으로 변환
parseInt() : 문자를 int형으로 변환(정수)
parseFloat() : 문자를 float형으로 변환(소수)
** 3_명시적_타입변화.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>명시적 타입 변환</title>
</head>
<body>
<h2>명시적 타입 변환</h2>
<script>
"use strict";
let num1 = "10";
let num2 = "5";
console.log("현재 num1의 타입 : " + (typeof num1));
console.log("num1 + num2 : " + (num1 + num2));
console.log("Number(num1) + Number(num2) : " + (Number(num1) + Number(num2)));
console.log(Number(num1 + num2)); // (x)
// : 왜냐하면 문자열 결합 후 Number 타입으로 변환되기 때문에
</script>
</body>
</html>
** 출력결과
3. 자바스크립트의 대화상자
1) window.alert()
: 사용자에게 메시지를 보여주고, 확인을 기다린다.
2) window.confirm()
: 사용자에게 메시지를 보여주고, 확인이나 취소를 누르면 그 결과를 불린 값으로 반환
3) window.prompt()
: 사용자에게 메시지를 보여주고, 사용자가 입력한 내용은 문자열로 반환
[참고] 아래의 코드는 사용자가 입력한 것은 문자열로 반환된다는 예시
> 만약 사용자가 입력한 정보를 바탕으로 연산을 하고 싶다면
아래의 4_대화상자.html 코드처럼 연산하기 전에 Number로 변환한 다음 연산하면 된다 <
** 4_대화상자.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>대화상자</title>
</head>
<body>
<h2>대화상자</h2>
<script>
"use strict";
//window.alert('안녕하세요. JavaScript!'); // window는 생략 가능
//let result = window.confirm('확인 또는 취소를 눌러주세요.');
//console.log(result);
//let name = window.prompt('이름을 입력하세요.');
//console.log(name);
let num1 = window.prompt('첫번째 숫자를 입력하세요.');
let num2 = window.prompt('두번째 숫자를 입력하세요.');
//console.log(num1 + num2); // 문자열로 반환되기 때문에 연산이 아닌 연결이 됨
console.log(Number(num1) + Number(num2)); // number로 변환 후 더해야 연산이 됨
</script>
</body>
</html>
** 출력결과
4. 연산자(Operator)
1) 산술연산자
: 사칙연산을 다루는 가장 기본적인 연산자
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 나눈 나머지 값(예 : 10 % 3 = 1)
** 거듭제곱
** 5_산술 연산자.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>산술 연산자</title>
</head>
<body>
<h2>산술 연산자</h2>
<script>
"use strict";
let num1 = Number(prompt('첫번째 숫자를 입력하세요.'));20
let num2 = Number(prompt('두번째 숫자를 입력하세요.'));
let result = num1 + num2;
console.log(`num1 + num2 = ${result}`);
//console.log('num1 + num2 = ' + result);
result = num1 - num2;
console.log(`num1 - num2 = ${result}`);
result = num1 * num2;
console.log(`num1 * num2 = ${result}`);
result = num1 / num2;
console.log(`num1 / num2 = ${result}`);
result = num1 % num2;
console.log(`num1 % num2 = ${result}`);
result = num1 ** num2;
console.log(`num1 ** num2 = ${result}`);
</script>
</body>
</html>
** 출력결과
2) 비교연산자
: 비교연산자는 피연산자 사이의 상대적인 크기를 판단하여 참 또는 거짓을 반환
> 왼쪽의 값이 오른쪽의 값보다 크면 참을 반환
< 오른쪽의 값이 왼쪽의 값보다 크면 참을 반환
>= 왼쪽의 값이 오른쪽의 값보다 크거나 같으면 참을 반환
<= 오른쪽의 값이 왼쪽의 값보다 크거가 같으면 참을 반환합
== 두 식의 값이 같으면 참을 반환(타입의 관계없이 "10" == 10는 참)
=== 두 식의 값이 같고, 타입까지 같으면 참을 반환("10" === 10은 거짓, 앞에는 string이고 뒤에는 number임)
!= 두 식의 값이 다르면 참을 반환(타입의 관계없이 "10" != 5는 참)
!== 두 식의 값이 같지 않고, 타입까지 같지 않으면 참을 반환(10 !== "1"은 참)
** 6_비교연산자.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>비교 연산자</title>
</head>
<body>
<h2>비교 연산자</h2>
<script>
"use strict";
let num1 = 3, num2 = 5;
let str1 = "3", str2 = "abcde", str3 = "bcd";
let result = (num1 > num2);
console.log(`num1 > num2 : ${result}`);
result = (str2 <= str3);
console.log(`str2 <= str3 : ${result}`); // 알파벳 순서대로 계산
result = (num1 == str1);
console.log(`num1 == str1 : ${result}`);
result = (num1 === str1);
console.log(`num1 === str1 : ${result}`);
</script>
</body>
</html>
** 출력결과
3) 대입연산자
: 대입연산자는 변수에 값을 대입할 때 사용하는 연산자
= 왼쪽 변수에 오른쪽 값에 대입
+= 왼쪽 변수에 오른쪽 값을 더한 후, 그 결과를 다시 왼쪽 변수에 대입
-= 왼쪽 변수에 오른쪽 값을 뺀 후, 그 결과를 다시 왼쪽 변수에 대입
*= 왼쪽 변수에 오른쪽 값을 곱한 후, 그 결과를 다시 왼쪽 변수에 대입
/= 왼쪽 변수에 오른쪽 값을 나눈 후, 그 결과를 다시 왼쪽 변수에 대입
%= 왼쪽 변수에 오른쪽 값을 나눈 나머지 값을 구한 후, 그 결과를 다시 왼쪽 변수에 대입
**= 왼쪽 변수에 오른쪽 값을 거듭제곱한 후, 그 결과를 다시 왼쪽 변수에 대입
예)
let a = 10;
a += 1; // a = a + 1;
a -= 1; // a = a - 1;
a *= 1; // a = a * 1;
a /= 1; // a = a / 1;
a %= 1; // a = a % 1;
a **= 1; // a = a ** 1;
** 7_대입연산자.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>대입 연산자</title>
</head>
<body>
<h2>대입 연산자</h2>
<script>
"use strict";
let num1 = 10, num2 = 10, num3 = 10;
num1 += 5;
console.log(`num1 += 5 : ${num1}`);
num2 -= 5;
console.log(`num2 -= 5 : ${num2}`);
num3 =- 5; // 이건 띄어쓰기만 있을뿐, -5를 대입하라는 의미
console.log(`num3 =- 5 : ${num3}`);
</script>
</body>
</html>
** 출력결과
4) 증감연산자
: 증감연산자는 값을 1씩 증가하거나 혹은 감소시킬때 사용하는 연산자
연산자가 어느 쪽에 위치하는 거에 따라 연산자의 순서 및 결과가 달라진다.
++변수 변수의 값을 1 증가시킨 후 다음 연산을 진행
변수++ 먼저 다른 연산을 수행한 후, 변수의 값을 1 증가
--변수 변수의 값을 1 감소시킨 후, 다음 연산을 진행
변수-- 먼저 다른 연산을 수행한 후, 변수의 값을 1 감소
** 8_증감연산자.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>증감 연산자</title>
</head>
<body>
<h2>증감 연산자</h2>
<script>
"use strict"
let num1 = 10;
console.log(`num1의 값 : ${num1}`);
console.log(`++num1의 값 : ${++num1}`);
console.log(`num1의 값 : ${num1}`);
console.log(`num1++의 값 : ${num1++}`);
console.log(`num1의 값 : ${num1}`);
</script>
</body>
</html>
** 출력결과
5) 논리연산자
: 논리연산자는 주어진 논리식을 판단하여 참과 거짓을 반환
① AND 연산 : 두 논리식이 모두 참이면 참을 반환하는 연산자
A && B | 결과 | |
true | true | true |
true | false | false |
false | true | false |
false | false | false |
② OR 연산 : 두 논리식 중 하나라도 참이면 참을 반환하는 연산자
A || B | 결과 | |
true | true | true |
true | false | true |
false | true | true |
false | false | false |
③ NOT 연산 : 논리식의 결과가 참이면 거짓으로, 거짓이면 참으로 변환하는 연산자
!A | 결과 |
true | false |
false | true |
** 9_논리연산자.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>논리 연산자</title>
</head>
<body>
<h2>논리 연산자</h2>
<script>
"use strict";
let num1 = 10, num2 = 5;
let result1 = (num1 == num2); // false
let result2 = (num1 >= num2); // true
console.log(`result1 && result2 : ${result1 && result2}`);
console.log(`result1 || result2 : ${result1 && result2}`);
console.log(`!result1 : ${!result1}`);
</script>
</body>
</html>
** 출력결과
6) 비트연산자
: 비트 연산자는 논리 연산자와 비슷하지만 비트 단위로 논리 연산을 수행
& 대응되는 비트가 모두 참이면 참을 반환하는 연산자
| 대응되는 비트 중에서 하나라도 참이면 참을 반환하는 연산자
^ 대응되는 비트가 서로 다르면 참을 반환하는 연산자
<< 지정한 수만큼 비트를 왼쪽으로 이동
>> 지정한 수만큼 비트를 오른쪽으로 이동
[참고] bit : 정보표현의 최소 단위, 0과 1로 정보를 표현
[참고] byte : 문자 표현의 최소 단위, 1byte는 8bit
KB(킬로바이트) : 1KB는 1024byte 입니다.
MB(메가바이트) : 1MB는 1024KB 입니다.
GB(기가바이트) : 1GB는 1024MB 입니다.
TB(테라바이트) : 1TB는 1024GB 입니다.
PB(페타바이트) : 1PB는 1024TB 입니다.
[참고] 워드(word) : 컴퓨터 설계시 정해지는 메모리의 기본 단위를 의미
예) 25 & 18 = 16
128 64 32 16 8 4 2 1
1 1 0 0 1 (25)
& 1 0 0 1 0 (18)
---------------------------------------
1 0 0 0 0 (16)
예) 25 | 18 = 27
128 64 32 16 8 4 2 1
1 1 0 0 1 (25)
| 1 0 0 1 0 (18)
---------------------------------------
1 1 0 1 1 (27)
예) 25 ^ 18 = 11
128 64 32 16 8 4 2 1
1 1 0 0 1 (25)
^ 1 0 0 1 0 (18)
---------------------------------------
0 1 0 1 1 (11)
예) 25 << 2 = 100
128 64 32 16 8 4 2 1
1 1 0 0 1 (25)
---------------------------------------
1 1 0 0 1 0 0 (100)
예) 25 >> 2 = 6
128 64 32 16 8 4 2 1
1 1 0 0 1 (25)
---------------------------------------
1 1 0 (6)
** 10_비트연산자.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>비트 연산자</title>
</head>
<body>
<h2>비트 연산자</h2>
<script>
"use strict";
let num1 = 25, num2 = 18;
console.log(`num1 & num2 : ${num1 & num2}`);
console.log(`num1 | num2 : ${num1 | num2}`);
console.log(`num1 ^ num2 : ${num1 ^ num2}`);
console.log(`num1 << 2 : ${num1 << 2}`);
console.log(`num1 >> 2 : ${num1 >> 2}`);
</script>
</body>
</html>
** 출력결과
7) 삼항연산자
: 조건식에 따른 참, 거짓에 따라 반환값이 달라지는 연산자
** 조건식이란?
: true와 false의 결과 값을 갖는 식
예)
변수 = 조건식 ? 반환값1(true일때) : 반환값2(false일때)
** 11_삼항연산자.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>삼항 연산자</title>
</head>
<body>
<h2>삼항 연산자</h2>
<script>
"use strict";
let num1 = Number(prompt('첫번째 숫자를 입력하세요 : '));
let num2 = Number(prompt('두번째 숫자를 입력하세요 : '));
let result = (num1 > num2) ? num1 : num2;
console.log(`두 수 중 큰 수는? ${result}`);
</script>
</body>
</html>
** 출력결과
'웹_프론트_백엔드 > 프론트엔드' 카테고리의 다른 글
2020.08.30 (0) | 2020.08.30 |
---|---|
2020.08.29 (0) | 2020.08.29 |
과제-자료를 받아 출력하는 프로그램 (0) | 2020.08.14 |
2020.08.08 (0) | 2020.08.10 |
학습목표 및 일정 (0) | 2020.08.10 |