Preface
이번 장에선 자바스크립트의 기본 문법을 공부했다.
반복문, 조건문, 연산자 등 대부분의 것들이 다른 프로그래밍 언어의 문법과 비슷해서 한 번 읽어보는 것 만으로 충분히 이해하고 넘어갈 수 있었다.
한 가지 주의깊게 살펴봐야 할 부분은 자바스크립트 코드 안에 HTML 태그를 사용하는 부분인 것 같다.
내가 아직 자바스크립트에 익숙치 않아서 그런지 document.write( ) 함수 안에 태그를 사용하여 코드를 구성하는 것이 어색하고 헷갈린다.
1. 변수 알아보기
- 변수: 프로그램을 실행하는 동안 값이 여러 번 달라질 수 있는 데이터
- 상수: 값을 한 번 지정하면 바뀌지 않는 데이터
- 변수 선언하는 방법: var 예약어 뒤에 변수 이름을 적는다.
→ var를 한 번만 쓰고 여러 변수를 쉼표로 구분하여 같은 줄에 선언할 수도 있다.
var 변수명
2. 자료형 이해하기
- 자료형: 컴퓨터가 처리할 수 있는 자료의 형태
종류 | 설명 | 예시 | |
기본 유형 | 숫자형 | 따옴표 없이 숫자로만 표기한다. | var birthYear = 2000; |
문자열 | 작은 따옴표나 큰 따옴표로 묶어서 나타낸다. | var greeting = "Hello"; | |
논리형 | 참과 거짓이라는 2가지 값만 있는 유형이며, true와 false는 소문자로만 표시한다. | var isEmpty = true; | |
복합 유형 | 배열 | 하나의 변수에 여러 개의 값을 저장한다. | var seasons = ['봄', '여름']; |
객체 | 함수와 속성을 함께 표시한다. | var date = new Date( ); | |
특수 유형 | undefined | 자료형이 지정되지 않았을 때의 상태이다. | |
null | 값이 유효하지 않을 때의 상태이다. |
- 웹 브라우저 주소 창에 'about:blank'를 입력하면 빈 문서가 나온다.
- typeof: 해당 자료의 자료형을 알려준다.
- 자바스크립트에서 실수를 정밀하게 계산하는 것은 적합하지 않다.
3. 연산자 알아보기
- 산술 연산자: 수학 계산을 할 때 사용하는 연산자.
종류 | 설명 | 예시 |
+ | 두 피연산자의 값을 더한다. | c = a + b |
- | 첫 번째 피연산자에서 두 번째 피연산자 값을 뺀다. | c = a - b |
* | 두 피연산자의 값을 곱한다. | c = a * b |
/ | 첫 번째 피연산자의 값을 두 번째 피연산자 값으로 나눈 몫을 구한다. | c = a / b |
% | 첫 번째 피연산자 값을 두 번째 피연산자 값으로 나눈 나머지를 구한다. | c = a % b |
++ | 피연산자를 1 증가시킨다. | a++ |
-- | 피연산자를 1 감소시킨다. | b-- |
- 증가 감소 연산자(++, --)가 피연산자 뒤에 있을 때는 연산식의 처리를 끝낸 다음에 적용되지만, 피연산자 앞에 있을 때는 연산식을 처리하기 전에 적용된다.
- 할당 연산자: 오른쪽의 실행 결과를 왼쪽 변수에 할당하는 연산자
종류 | 설명 | 예시 |
= | 연산자 오른쪽의 값을 왼쪽 변수에 할당한다. | y = x = 3 |
+= | y = y + x를 의미한다. | y += x |
-= | y = y - x를 의미한다. | y -= x |
*= | y = y * x를 의미한다. | y *= x |
/= | y = y / x를 의미한다. | y /= x |
%= | y = y % x를 의미한다. | y %= x |
- 연결 연산자: 둘 이상의 문자열을 합쳐서 하나의 문자열로 만드는 연산자.
→ 더하기 연산자와 똑같은 '+' 기호를 사용한다.
- 비교 연산자: 피연산자 2개의 값을 비교해서 참이나 거짓으로 결괏값을 반환한다.
종류 | 설명 | 예시 | |
조건식 | 결괏값 | ||
== | 피연산자가 서로 같으면 true이다. | 3 == '3' | true |
=== | 피연산자도 같고 자료형도 같으면 true이다. | 3 === '3' | false |
!= | 피연산자가 서로 같지 않으면 true이다. | 3 != '3' | false |
!== | 피연산자가 같지 않거나 자료형이 같지 않으면 true이다. | 3 !== '3' | true |
< | 왼쪽 피연산자가 오른쪽 피연산자보다 작으면 true이다. | 3 < 4 | true |
<= | 왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같으면 true이다. | 3 <= 4 | true |
> | 왼쪽 피연산자가 오른쪽 피연산자보다 크면 true이다. | 3 > 4 | false |
>= | 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 true이다. | 3 >= 4 | false |
- '==' 연산자와 '!= ' 연산자: 피연산자의 자료형을 자동으로 변환해서 비교
- '===' 연산자와 '!==' 연산자: 피연산자의 자료형을 변환하지 않음
→ 프로그램에서 값을 비교할 때 자료형을 변환하지 않기 위해 주로 사용한다.
- 피연산자가 문자열이라면 문자열에 있는 문자들의 아스키 값을 비교해서 결정한다.
→ 숫자보다 문자의 아스키 값이 더 크고 대문자보다 소문자의 아스키값이 더 크다.
- 논리 연산자(boolean): true, false를 처리하는 연산자
종류 | 기호 | 설명 |
OR 연산자 | || | 피연산자 중 하나만 true여도 true이다. |
AND 연산자 | && | 피연산자가 모두 true일 경우에만 true이다. |
NOT 연산자 | ! | 피연산자의 반댓값을 지정한다. |
4. 조건문 알아보기
- if문 구조
if(조건) {
조건 결괏값이 true일 때 실행할 명령
}
- if~else문 구조
if(조건) {
조건 결괏값이 true일 때 실행할 명령
} else {
조건 결괏값이 false일 때 실행할 명령
}
- 조건 연산자: '?'와 ':' 기호로 이루어진 조건문
(조건) ? true일 때 실행할 명령 : false일 때 실행할 명령
if (userNumber !== null)
(userNumber % 3 === 0) ? alert("3의 배수입니다.") : alert("3의 배수가 아닙니다.");
else
alert("입력이 취소됐습니다.");
- switch문 구조
→ case 문에서는 값만 사용하고 식을 사용할 수 없다.
switch(조건)
{
case 값1: 명령1
break
case 값2: 명령2
break
default: 명령
}
var session = prompt("관심 세션을 선택해 주세요. 1-마케팅, 2-개발, 3-디자인");
switch (session) {
case "1" : document.write("<p>마케팅 세션은 <strong>201호</strong>에서 진행됩니다.</p>")
break;
case "2" : document.write("<p>개발 세션은 <strong>203호</strong>에서 진행됩니다.</p>");
break;
case "3" : document.write("<p>디자인 세션은 <strong>205호</strong>에서 진행됩니다.</p>")
break;
default: alert("잘못 입력했습니다.");
}
- parseInt( ) 함수: 실수를 정수로 변환해주는 함수
→ prompt( ) 문을 사용해 입력받은 값은 기본적으로 문자열로 저장되므로, 입력받을 값을 처음부터 숫자로 바꿔 주는 것이 안전하다.
var num = parseInt(prompt("입장객은 몇 명인가요?"));
5. 반복문 알아보기
- for문 구조
for(초깃값; 조건; 중거삭) {
실행할 명령
}
var i, j;
for (i = 1; i <= 9; i++) {
document.write("<table>");
document.write("<tr><th>" + i + "단</th></tr>");
for (j = 1; j <= 9; j++) {
document.write("<tr><td>" + i +" X " + j + " = " + i*j + "</td></tr>");
}
document.write("</table>");
}
- while문 구조
while(조건) {
실행할 명령
}
- do~while문 구조: 일단 명령을 한 번 실행한 후 while문에서 조건을 체크한다.
→ 조건이 false라 하더라도 일단 명령은 최소한 한 번 실행된다.
do {
실행할 명령
} while(조건)
- break문: 반복문을 빠져나올 때 사용
- continue문: 반복문을 건너뛸 때 사용
- 자리배치도를 만드는 코드
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>자리 배치도</title>
<style>
table, td {
border:1px solid #ccc;
border-collapse: collapse;
}
td {
padding:5px;
font-size:0.9em;
}
</style>
</head>
<body>
<h1>자리 배치도</h1>
<script>
var i, j;
var memNum = prompt("입장객은 몇 명인가요?"); // 전체 입장객
var colNum = prompt("한 줄에 몇 명씩 앉습니까?"); // 한 줄에 앉을 사람
if (memNum % colNum == 0)
rowNum = parseInt(memNum / colNum);
else
rowNum = parseInt(memNum / colNum) + 1;
// document.write("모두 " + rowNum + "개의 줄이 필요합니다.");
document.write("<table>");
for (i = 0; i < rowNum; i++) {
document.write("<tr>");
for (j = 1; j <= colNum; j++) {
seatNo = i * colNum + j; // 좌석 번호
if (seatNo > memNum) break;
document.write("<td> 좌석 " + seatNo + " </td>");
}
document.write("</tr>");
}
document.write("</table>");
</script>
</body>
</html>
'Web Front > HTML + CSS + 자바스크립트' 카테고리의 다른 글
[JS] 함수와 이벤트 (2) (0) | 2022.08.07 |
---|---|
[JS] 함수와 이벤트 (1) (0) | 2022.08.06 |
[JS] 자바스크립트와 첫 만남 (0) | 2022.08.03 |
[CSS] 반응형 웹과 미디어 쿼리 (0) | 2022.08.03 |
[CSS] 트랜지션과 애니메이션 (0) | 2022.08.01 |
댓글