2025. 12. 17. 21:20ㆍ대우개발원 수업 내용/Javascript
자바스크립트로 웹 동작 구현하기
웹 페이지에서 동적인 동작을 구현하기 위해 자바스크립트(JavaScript)를 사용한다.
아래 내용은 자바스크립트의 기본 개념과 문법을 정리한 것이다.
Part 3. 자바스크립트 기초
8.1 자바스크립트 코드 작성 방법내부 스크립트 방법 (internal script)
- HTML 문서 안에서 script 태그의 콘텐츠 영역에 자바스크립트 코드를 작성
외부 스크립트 방법 (external script)
- 별도의 js 확장자 파일을 만들어 자바스크립트 코드를 작성
- 이 파일을 HTML 문서에서 script 태그로 연결
script 태그의 사용 위치
- script 태그는 웹 브라우저에 화면이 표시되는 것에 영향을 미치지 않도록
body 태그가 끝나기 전에 사용
2. 자바스크립트 코드 실행하기
- 웹 브라우저의 개발자 도구에서 지원하는 콘솔창 활용하기
- VSCode의 Code Runner 확장 프로그램 활용하기
- NodeJS 설치
실행 시
- 글자 깨질 경우 document.write()로 웹 페이지에 HTML 콘텐츠 출력
document.write() 활용 예제파일명: HTMLwrite.html
8.2 프로그래밍 시작 전 알아 두기한 줄 주석
- // 기호(슬래시 2개)로 작성
- 단축키: Ctrl + /
여러 줄 주석
- /* 기호와 */ 기호 사이에 작성
- 단축키: Shift + Alt + A
2. 자바스크립트 오류 확인 방법
- 컴파일 방식
- 모든 코드를 기계어로 변환 후 실행
- 인터프리터 방식
- 코드를 한 번에 한 줄씩 실행
오류 발생 시
- 오류가 발생하면 그 즉시 실행을 멈추고
오류 메시지와 오류가 발생한 줄 번호를
웹 브라우저의 콘솔창에 출력 - 모든 오류 관련 메시지는 웹 브라우저의 콘솔창에서 확인 가능
9.1 변수와 상수
- 변수(variant)
: 변하는 수. 값이 변하는 데이터를 저장하고 관리하기 위한 공간 - 키워드(keyword)
: 자바스크립트 프로그래밍 언어에서 어떤 역할이나 기능이 정해진 특별한 단어
: 예약어(reserved word)라고도 함 - 식별자(identifier)
: 자바스크립트 내부에서 변수, 함수 등에 부여되는 이름 - 연산자(operator)
: 어떠한 연산 작업을 하는 데 사용하는 기호 - 표현식(expression)
: 평가되어 하나의 값을 반환하는 식 또는 코드 - 값(value)
: 더 이상 평가할 수 없는 데이터 - 세미콜론(semicolon)
: 하나의 문(statement, 문법)이 끝났음을 의미
선언, 할당, 초기화
- 변수 선언
: 변수를 생성하고 값을 저장하는 문법에서
var, let, const 키워드를 사용해 변수의 식별자를 지정하는 것 - 값 할당
: 할당 연산자인 = 기호로 우변에 있는 값을 변수 공간에 대입(저장)하는 것 - 변수 초기화
: 선언과 할당을 같이(한 번에) 하는 것
2. 새로운 변수 선언 키워드 let
- 변수명 중복이 불가능
- 호이스팅되지 않음
호이스팅(hoisting)
- var 키워드로 변수를 선언하고 할당했을 때
변수 선언을 자바스크립트의 스코프(scope) 맨 위로 올려 실행하는 것 - 스코프의 범위가 다름
- 자바스크립트에는 변수 타입 없음
- 변수 타입 선언하지 않음
- 변수에 저장되는 값에 대한 제약 없음
let score; // 변수 score 선언
let year, month, day; // year, month, day의 3 개의 변수 선언
let address = “서울시”; // address 변수를 선언하고 “서울시”로 초기화
age = 21; // let 없이, 변수 age를 선언하고 21로 초기화
let score; // 정상적인 변수 선언
int score; // 오류. 변수 타입 int 없음
score = 66.8; // 실수도 저장 가능
score = “high”; // 문자열로 저장 가능
3. 상수
- 상수(constant) : 변하지 않는 수
- const 키워드는 재할당이 안 되는 특징 때문에
상수 변수(constant variable)를 선언할 때 사용하는 키워드라고 하기도 함
4. 식별자 명명 규칙
- 식별자에 키워드 사용 불가
예: var, let, const - 식별자에 공백 포함 불가
예: my School, like food - 식별자의 첫 글자는
영문 소문자, _(언더스코어), $ 기호만 사용
예: *name, #age, @email
const.html 예제
9.2 자료형
- 큰따옴표나 작은따옴표로 둘러싸인 값
- 문자열에 따옴표가 포함된 경우
- 문자열에 포함되지 않은 따옴표로 감싸서 정의
- 문자열 연결 연산자(+) 또는 이스케이프 문자 사용
- 문자열 연결 연산자(+)
- 이스케이프 문자(, 역슬래시)
- 템플릿 문자열(`, 백틱)
2. 숫자형
- 정수, 실수를 포함한 모든 숫자
3. 논리형
- 논리 값(true, false)
4. undefined
- 변수에 아무런 값도 할당되지 않는 상태를 나타내는 값
5. null
- 변수를 의도적으로 비워 두기 위해 사용하는 값
6. 객체
- 배열, 함수, 객체 리터럴 등으로 파생되는 상위 자료형
- 배열(array) : 복수의 데이터를 정의할 수 있는 자료형
- 객체 리터럴 : 중괄호({})를 사용하며, 키(key)와 값(value)의 한쌍으로 이루어짐
9.3 연산자이항 산술 연산자
- 연산을 수행하는 데 피연산자가 2개 필요한 연산자
x + y : x에 y를 더함
x – y : x에 y를 뺌
x * y : x에 y를 곱함
x / y : x를 y로 나눔
x % y : x를 y로 나누어 나머지를 구함
x ** y : x의 y 거듭제곱
산술 연산 예제 (arithmetic.html)
단항 산술 연산자
- 단항 산술 연산자 : 연산을 수행하는 데 피연산자가 1개만 필요한 연산자
- 연산자를 앞에 사용하면 전치 연산, 뒤에 사용하면 후치 연산
- x++(후치 연산), ++x(전치 연산) : x를 1 증가시킴
- x--(후치 연산), --x(전치 연산) : x를 1 감소시킴
단항 부정 연산자
- 항상 피연산자 앞에 위치하며 피연산자의 부호를 부정하는 연산자
- -x : x의 부호를 부정(음수 → 양수, 양수 → 음수)
2. 대입 연산자와 복합 대입 연산자
- x = y : x에 y를 대입
복합 대입 연산자
3. 비교 연산자
- 피연산자를 비교한 뒤, 논리형 값인 참(true), 거짓(false)을 반환
x == y : x와 y의 값이 같으면 true를 반환
x === y : x와 y의 값과 자료형이 같으면 true를 반환
x != y : x와 y의 값이 다르면 true를 반환
x !== y : x와 y의 값과 자료형이 다르면 true를 반환
x < y : x가 y보다 작으면 true를 반환
x <= y : x가 y보다 작거나 같으면 true를 반환
x > y : x가 y보다 크면 true를 반환
x >= y : x가 y보다 크거나 같으면 true를 반환
4. 논리 연산자
- 연산자를 논리적으로 평가한 뒤, 조건에 맞는 피연산자를 반환
x && y → x가 참이면 y를 반환하고, 거짓이면 x를 반환
x || y → x가 참이면 x를 반환하고, 거짓이면 y를 반환
!x → x가 참이면 false를 반환하고, 거짓이면 true를 반환
5. 삼항 연산자
- 세 항 중 가장 왼쪽에 있는 피연산자의 참, 거짓에 따라
나머지 두 항에 있는 피연산자를 선택적으로 반환
x ? y : z → x가 참이면 y를 반환하고, x가 거짓이면 z를 반환
6. 연산자 우선순위
- 연산자를 여러 개 사용했을 때 어떤 연산자를 먼저 연산할지를 결정하는 기준
- 가능한 한 우선순위가 가장 높은 그룹 연산자를 사용해
식의 우선순위를 단순하게 정리하는 것이 좋음
7. 형 변환
- 데이터의 자료형이 다른 자료형으로 바뀌는 것
암시적 형 변환
- 사용자가 형 변환을 의도하지 않았지만, 자바스크립트에서 자체적으로 형 변환
- 개발자가 놓친 부분이라는 의미이므로
암시적 형 변환이 발생하지 않도록 코드에 형 변환을 명확하게 표시하는 것이 좋음
명시적 형 변환
- 드러나게 형 변환을 처리하는 것
document.write()로 웹 페이지에 HTML 콘텐츠 출력

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>document.write() 활용</title>
</head>
<body>
<h3>document.write() 활용</h3>
<hr>
<script>
document.write("<h3>Welcome!</h3>");
document.write("2 + 5 는");
document.write("<mark>7 입니다.</mark>");
console.log('출력하기');
</script>
</body>
</html>
script.js

console.log('출력하기')
// let num = 10; //num이라는 변수에 10이라는 value를 할당하는 =(연산자), 할당 연산자
let num = 30; //초기화
num = 10; //재할당
console.log(num); // 출력결과는 10
var a = 30;
console.log(a); // 출력결과 30
var a = 50;
console.log(a); // 출력결과 50
// var 키워드는 앞에서 선언된 변수가 재선언이 가능하다
score = 66.8; // 실수도 저장 가능
score = "high"; // 문자열로 저장 가능
console.log(score); // 출력결과 high
const num1 = 10;
// num1 = 30;
console.log(num1); // 출력결과 10
// const = num2 //선언을 먼저하고
// num2 = 10; //할당을 나중에 하면 오류가 난다
const.html 상수
<!DOCTYPE html>
<html>
<head><title>상수</title></head>
<body>
<h3>상수</h3>
<hr>
<script>
let oct = 0o15; // 0o15는 16진수, 10진수로 13
let hex = 0x14; //0x14는 16진수. 10진수로 21
let condition = true; // True로 쓰면 안된다
document.write("8진수 0o15는 십진수로 " + oct + "<br>");
document.write("16진수 0x15는 십진수로 " + hex + "<br>");
document.write("condition은 " + condition + "<br>");
document.write('문자열 : 단일인용부호로도 표현' + "<br>");
document.write("그녀는 \"누구세요\"라고 했습니다.");
</script>
</body>
</html>
string.js

let string1 = "Hello, World!";
let string2 = "Hello, World!";
console.log(string1);
console.log(string2);
let string = "이스케이프 문자열을 이용해서 \n줄바꿈을 하고 싶어요"
console.log(string);
let string3 = '문자열은 큰따옴표(")나' + "작은따옴표(')로 감싸면 됩니다.";
console.log(string3);
let dan = 3;
let gugu = 8;
// let string4 = dan + "곱하기 " + gugu + "은 " + dan*gugu + "입니다.";
let string4 =`${dan}곱하기 ${gugu}은 ${dan * gugu}입니다.`;
console.log(string4);
type.js 객체리터럴
let num1 = "10"; //생김새는 숫자지만 문자열임
let num2 = 0.1;
console.log(num1);
console.log(num2);
console.log(typeof(num1));
console.log(typeof(num2));
let boolean1 = 10 < 20;
let boolean2 = 10 > 20;
console.log(boolean1); // true
console.log(boolean2); //false
let empty;
console.log(empty); //undefined -> 변수에 아무런 값도 할당되지 않는 상태를 나타내는 값
let empty1 =null;
console.log(empty1); //null -> 변수를 의도적으로 비워 두기 위해 사용하는 값
let studentScore = [80, 70, 90, 60]; // 국어, 영어, 수학, 과학 점수
// ([]는 배열(array) : 복수의 데이터를 정의할 수 있는 자료형)
console.log(studentScore[1]); // 70, 1번 인덱스의 데이터에 접근
console.log(studentScore); // [ 80, 70, 90, 60 ]
let exArray = [100, "a"] // 데이터를 섞는게 Java에서는 불가능 하지만 Javascript에서는 가능
console.log(exArray[1]); // a
let studentScore1 = {
koreanScore:80,
englishScore:70,
mathScore:90,
scienceScore:60
};
console.log(studentScore1.koreanScore); //80
console.log(studentScore1['englishScore']); //70
//여기 아래 부분이 객체 리터럴
const person = {
name: ["Bob", "Smith"],
age: 32,
gender: "male",
interests: ["music", "skiing"],
bio: function () {
alert(
this.name[0] +
" " +
this.name[1] +
" is " +
this.age +
" years old. He likes " +
this.interests[0] +
" and " +
this.interests[1] +
".",
);
},
greeting: function () {
alert("Hi! I'm " + this.name[0] + ".");
},
};
console.log(person);
출력결과
10
0.1
string
number
true
false
undefined
null
70
[ 80, 70, 90, 60 ]
a
80
70
{
name: [ 'Bob', 'Smith' ],
age: 32,
gender: 'male',
interests: [ 'music', 'skiing' ],
bio: [Function: bio],
greeting: [Function: greeting]
}
operator.js 연산자 속성
단항 산술 연산자 (후치, 전치 연산)
let sum = 10 + 20 * 3;
//소괄호 적용해서 연산 순서를 변경 가능
//let sum = (10 + 20) * 3;
console.log(sum);
let num = 10;
let result = num *= 3;
console.log(result); //30
출력결과
70
30
arithmetix.html 산술 연산

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>산술연산</title>
</head>
<body>
<h3>산술연산</h3>
<hr>
<script>
let x=32;
let total = 100 + x*2/4 - 3 //total은 113
let div = x / 10; // div는 3.2
let mod = x % 2; // x를 2로 나눈 나머지, 0
document.write("x : " + x + "<br><br>");
document.write("100 + x*2/4 - 3 = " + total + "<br>");
document.write("x/10 = " + div + "<br>");
document.write("x%2 = " + mod + "<br>");
</script>
</body>
</html>
operator.js 다른 모든 연산자 정리
let sum = 10 + 20 * 3;
//소괄호 적용해서 연산 순서를 변경 가능
//let sum = (10 + 20) * 3;
console.log(sum);
let num = 10;
let result = num *= 3;
console.log(result); //30
//단항 산술 연산자 (후치, 전치 연산)
let increment = 10;
increment++;
let decrement = 10;
decrement--;
console.log(increment); //11
console.log(decrement); //9
let num1 = 10;
let subNum = ++num1; // 앞에 사용했으므로 전치 연산 방식
console.log(subNum); // 11
let subNum1 = num1++ // 뒤에 사용했으므로 후치 연산 방식
console.log(subNum1); // 11
console.log(num1); // 12
let num2 = -10;
num2 = -num2;
console.log(num2); // 10
let num3 = 2;
console.log(num3 *= 3); // 6
let x = 10;
let y = "10";
console.log( x == y); // true
console.log(x === y); // false 등호 3개는 자료형까지 비교한다
let i = false;
let j = true;
let f = i && j; // and연산자 false
console.log(f);
let k = i || j; //or연산자 true
console.log(k);
let score = 90;
let grade = score >= 90 ? 'A+' : 'B'; // 삼항 연산자
console.log(grade); // A+
let result1 = 10 + "10"; // 형 변환
console.log(result1); // 1010
console.log(typeof(result1)); // string
출력결과
70
30
11
9
11
11
12
10
6
true
false
false
true
A+
1010
string
'대우개발원 수업 내용 > Javascript' 카테고리의 다른 글
| Javascript 6일차 함수 return문 / 스코프 / 호이스팅 (1) | 2025.12.24 |
|---|---|
| Javascript 5일차 함수(function) (0) | 2025.12.23 |
| Javascript 4일차 array / for in / break / continue (0) | 2025.12.22 |
| Javascript 3일차 조건문 연습 / 반복문 (1) | 2025.12.19 |
| javascript 2일차 조건문 if / else / switch (0) | 2025.12.18 |
