
아래 내용은 “JavaScript의 핵심 구문 및 기능”을 배우기 위한 기초 지침을 길고 자세하게, 이해하기 쉽게 풀어 쓴 설명입니다. 처음 JavaScript를 접하시는 분들을 위해 용어나 과정을 차근차근 풀어드리니, 편하게 읽어보세요!
우리가 이제부터 배우려는 JavaScript는 브라우저에서 동적인 기능을 구현하기 위한 언어입니다. 웹사이트에 버튼을 누르면 어떤 행동이 일어난다거나, 입력한 값을 계산해서 결과를 보여주고, 시각적인 요소가 실시간으로 업데이트되도록 만드는 일을 JavaScript가 담당합니다.
이 강의(모듈)에서 특히 다룰 내용은 크게 다음과 같습니다.
JavaScript의 핵심 구문(Syntax)
변수(Variable)
연산자(Operator)
함수(Function)
이 내용들을 배운 뒤, 우리는 간단한 예제들을 통해 “화면에서 실제로 동작하는 JavaScript”를 직접 확인할 겁니다. 단순히 이론만 배우는 것이 아니라, 웹 브라우저에서 눈으로 보고 “아, 이런 식으로 모든 것들이 결합해서 작동하는구나!” 라고 이해할 수 있도록 진행합니다.
우리가 JavaScript를 배울 때는, 단순히 콘솔(Console)에 출력만 해보는 방법도 있지만, “눈에 보이는” 결과가 있으면 학습 동기가 훨씬 높아집니다. 따라서 웹사이트 형태로 JavaScript를 적용해볼 예정이에요.
강의에서는 이미 시작 프로젝트(Starter Project)가 제공됩니다. 압축 파일을 다운로드하여, 원하는 위치에 압축을 풀어준 뒤, IDE나 코드 에디터에서 폴더를 열어주시면 됩니다.
File > Open을 클릭해 해당 폴더를 열어주세요.폴더를 열면, 대략 아래와 같은 구조를 볼 수 있을 겁니다:
.vscode 폴더(없을 수도 있음) .gitignore 파일(있을 수도 있고, 없을 수도 있음) index.html index.html 파일 안에는 이미 작성되어 있는 스크립트(자바스크립트 파일 연결)가 하나 있을 텐데요, 아직 배우지 않은 기능들이 포함되어 있습니다. 폴더 구조를 확인했다면, 이제 실제로 웹 브라우저에서 페이지를 열어볼 차례입니다.
1. IDE(에디터) 내부에서 index.html을 실행하는 것이 아니라, Windows 탐색기나 Mac의 Finder에서 직접 파일을 더블 클릭해 열어주세요.
2. 그러면 기본 웹 브라우저가 열리면서, 어떤 모양의 페이지가 뜰 겁니다.
이 페이지는 계산기 모양을 하고 있지만, 현재로서는 아무리 버튼을 눌러도 반응이 없습니다. 왜냐하면 아직 계산 로직이나 이벤트 처리 로직을 JavaScript로 추가해 주지 않았기 때문이죠.
결국 “동적으로 무언가를 바꾸는” 역할을 담당하는 언어가 JavaScript인 셈이죠. 이번 모듈에서는 JavaScript에서 가장 기초가 되는 “변수, 연산자, 함수, 구문”을 차근차근 배워가며, 계산기 예시를 통해 실제로 동작하는 코드를 확인할 예정입니다.
변수(Variable) 기초
연산자(Operator) 이해
함수(Function)의 역할
브라우저와 상호작용
실습과 예제
index.html에 연결된 스크립트가 낯설어 보이겠지만, 학습을 진행할수록 점차 이해가 깊어지니 걱정하지 않으셔도 됩니다.이 과정을 따라가며 작은 코드부터 직접 작성해보면, 나중에는 스스로 간단한 웹 기능을 만들어낼 수 있을 거예요. “이 버튼을 누르면 이런 로직이 동작하고, 결과가 이렇게 표시된다.” 하는 식의 프로그래밍적 사고가 가능해집니다.
index.html을 더블 클릭해 브라우저에서 실행해본다. index.html과 연결된 스크립트(자바스크립트) 파일 위치 확인(단, 지금은 코드를 몰라도 괜찮음). 이제 학습을 시작하면, “어떻게 JavaScript 코드가 화면과 상호작용하고, 버튼을 눌렀을 때 어떤 계산이 일어나는지” 자연스럽게 터득할 수 있을 겁니다. 막연하게만 보였던 JavaScript가 실제로 웹을 움직이는 동력이라는 사실을 예제와 함께 확인해보세요!
여기까지가 위 내용을 쉽게 풀어 쓴 긴 설명이었습니다.
이제 본격적으로 변수를 배우는 다음 단계로 넘어가실 준비가 되셨습니다.
배운 내용은 너무 부담 갖지 말고, “아, 대략적으로 이렇게 돌아가는구나!” 정도로 기억하시면 됩니다.
계속해서 차근차근 익혀나가며 즐겁게 학습해보세요!
아래는 해당 프로젝트 폴더 구조와 각 파일의 코드 예시를 한눈에 보기 좋도록 정리한 내용입니다. 블로그 글에 참고하시면 좋겠습니다.
basics-01-starting-project/
┣─ assets/
│ ┣─ scripts/
│ │ └─ vendor.js
│ └─ styles/
│ └─ app.css
└─ index.html
vendor.js 파일이 위치 app.css 파일이 위치 const userInput = document.getElementById('input-number');
const addBtn = document.getElementById('btn-add');
const subtractBtn = document.getElementById('btn-subtract');
const multiplyBtn = document.getElementById('btn-multiply');
const divideBtn = document.getElementById('btn-divide');
const currentResultOutput = document.getElementById('current-result');
const currentCalculationOutput = document.getElementById('current-calculation');
function outputResult(result, text) {
currentResultOutput.textContent = result;
currentCalculationOutput.textContent = text;
}
* {
box-sizing: border-box;
}
html {
font-family: 'Roboto', open-sans;
}
body {
margin: 0;
}
header {
background: #023d6d;
color: white;
padding: 1rem;
text-align: center;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
width: 100%;
}
#results,
#calculator {
margin: 2rem auto;
width: 40rem;
max-width: 90%;
border: 1px solid #023d6d;
border-radius: 10px;
padding: 1rem;
color: #023d6d;
}
#results {
text-align: center;
}
#calculator input {
font: inherit;
font-size: 3rem;
border: 2px solid #023d6d;
width: 10rem;
padding: 0.15rem;
margin: auto;
display: block;
color: #023d6d;
text-align: center;
}
#calculator input:focus {
outline: none;
}
#calculator button {
font: inherit;
background: #023d6d;
color: white;
border: 1px solid #023d6d;
padding: 1rem;
cursor: pointer;
}
#calculator button:focus {
outline: none;
}
#calculator button:hover,
#calculator button:active {
background: #084f88;
border-color: #084f88;
}
#calc-actions button {
width: 4rem;
}
#calc-actions {
margin-top: 1rem;
text-align: center;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Basics</title>
<link
href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap"
rel="stylesheet"
/>
<link rel="stylesheet" href="assets/styles/app.css" />
</head>
<body>
<header>
<h1>The Unconventional Calculator</h1>
</header>
<section id="calculator">
<input type="number" id="input-number" />
<div id="calc-actions">
<button type="button" id="btn-add">+</button>
<button type="button" id="btn-subtract">-</button>
<button type="button" id="btn-multiply">*</button>
<button type="button" id="btn-divide">/</button>
</div>
</section>
<section id="results">
<h2 id="current-calculation">0</h2>
<h2>
Result: <span id="current-result">0</span>
</h2>
</section>
</body>
</html>
위 구조를 그대로 이용하면,
index.html에서 HTML 기본 구조 및 로드되는 자원(CSS, 폰트, JavaScript 파일)을 확인할 수 있고, vendor.js에서 계산 버튼 클릭 시 동작할 스크립트, app.css에서 전체적인 스타일을 적용할 수 있습니다.이렇게 설정해두면 브라우저에서 index.html을 실행했을 때, 간단한 계산기 UI가 보이며, 차후 JavaScript 로직 추가에 따라 동작하는 예제를 쉽게 만들 수 있습니다.
아래 내용은 “별도의 스크립트 파일(app.js)을 만들어서 HTML에 연결하고, 간단한 코드를 테스트하는 과정”을 파일 구조를 포함해 쉽고 자세하게 풀어낸 설명입니다. 웹 초보자분들을 위해 개념과 과정을 길게 설명했으니 편하게 참고해 보세요.
일반적으로 다음과 같은 폴더 구조를 가정해 볼 수 있습니다. (예시는 자유롭게 변형 가능)
my-project/
┣─ index.html
┗─ assets/
┣─ scripts/
│ ┣─ vendor.js
│ └─ app.js
┗─ styles/
└─ app.css
vendor.js: 강의에서 제공된 파일(또는 외부 라이브러리, 공통 코드 등)이 들어 있을 수 있음. app.js: 우리가 직접 작성할 스크립트 파일. app.css (또는 다른 이름) 등 스타일 관련 코드.위 구조는 하나의 예시일 뿐이므로, 필요에 따라 파일/폴더명을 마음대로 변경할 수 있습니다. 다만, 확장자(.js, .css 등)는 유지해야 합니다.
app.js) 역시 자유롭게 바꿔도 되지만, .js 확장자를 유지해야 합니다.가장 기본적인 테스트로, app.js 파일에 아래와 같은 한 줄의 코드를 추가해 봅시다.
alert('This works!');
alert()는 브라우저가 제공하는 기본 팝업 기능입니다.'This works!'라는 문구를 사용자에게 보여주고, 확인을 누를 때까지 페이지 로딩이 잠시 멈춥니다.app.js에 코드를 써두었어도, HTML이 이 스크립트 파일을 로드하지 않으면 아무 일도 일어나지 않습니다. 브라우저는 스스로 “assets/scripts 폴더 안의 app.js를 불러올까?” 하고 자동으로 찾아보지 않기 때문이죠.
HTML 파일의 <head>나 <body> 안에 <script> 태그를 만들고, 그 사이에 코드를 직접 써 넣을 수도 있습니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>My Page</title>
</head>
<body>
<h1>테스트 페이지</h1>
<script>
alert('This works - between script tags!');
</script>
</body>
</html>
.js 파일로 분리하는 것이 일반적이죠.대부분의 경우 이 방식을 선호합니다.
<script src="파일경로"></script>
파일경로(src)는 상대 경로 또는 절대 경로로 작성할 수 있습니다. assets/scripts/app.js, ./assets/scripts/app.js, http://example.com/app.js 등우리가 만들었던 app.js를 index.html에 연결한다고 해봅시다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>My Page</title>
</head>
<body>
<h1>테스트 페이지</h1>
<!-- 바디 끝에서 스크립트 로드하기 (권장) -->
<script src="assets/scripts/vendor.js"></script>
<script src="assets/scripts/app.js"></script>
</body>
</html>
vendor.js를 먼저 불러옵니다. app.js에서 vendor.js의 코드를 미리 사용할 수도 있기 때문입니다. app.js를 나중에 불러옵니다. <body> 끝 부분<head>가 아닌 <body> 맨 아래에 <script> 태그를 넣어주면, HTML을 일단 먼저 화면에 그린 뒤 스크립트를 불러올 수 있어서 사용자 경험이 더 좋습니다.<head>에 두면 브라우저가 스크립트를 다 불러오기 전까지 페이지가 뜨지 않을 수도 있어, 로딩이 느려 보일 수 있습니다.<body>를 해석하다가 <script src="assets/scripts/vendor.js"></script> 만나면, vendor.js 파일을 다운받아 실행합니다. <script src="assets/scripts/app.js"></script> 만나면, app.js를 다운받아 실행합니다. app.js 안에 alert('This works!')가 있으면, 즉시 팝업 창이 뜹니다. 만약 <head> 안에 스크립트를 넣었다면, 문서 구조를 다 그리기도 전에 alert가 뜰 수도 있어요. 그래서 보통 <body> 하단에 스크립트를 배치하는 겁니다.
app.js에서 vendor.js 안에 있는 특정 변수나 함수를 참조하고 있다면, 브라우저가 vendor.js를 먼저 로드해야 합니다.<script src="vendor.js"></script> 뒤에 <script src="app.js"></script>를 작성하는 식으로, 의존 파일을 먼저 로드해주는 것이 중요합니다.alert 창이 뜨더라도, 최소한 페이지 본문이 어느 정도 표시된 뒤라서 깜깜한 화면을 오래 보지 않아도 되죠.<script> 태그를 <head>에 넣는 대신, 바디 끝이나 defer/async 속성을 이용하는 방식을 권장합니다.자, 이제 HTML에 스크립트가 정상적으로 연결되었고, alert('This works!') 같은 간단 테스트도 마쳤습니다. 그럼 본격적으로 “계산기 로직” 같은 내용을 넣을 수 있는 준비가 된 것입니다.
index.html은 그저 화면에 버튼, 입력 창 등을 배치하며, 스크립트를 로드하는 역할만 하면 됩니다.향후에는 변수(값을 저장), 함수(코드 묶음), 이벤트 처리(버튼 누르면 작동) 등을 배워서, app.js에 더욱 복잡한 코드도 넣어볼 수 있습니다.
my-project/
┣─ index.html
┗─ assets/
┣─ scripts/
│ ┣─ vendor.js (제공된/공통/라이브러리 코드)
│ └─ app.js (우리가 작성하는 핵심 로직)
┗─ styles/
└─ app.css<head>나 <body> 안에서 <script src="..."></script> 태그 이용 vendor.js → app.js 순으로 로드해야, app.js에서 vendor.js 코드를 제대로 활용 가능alert('This works!'); 추가 후 페이지 새로고침 → 팝업 창 뜨면 성공이렇게 해서 “새로운 자바스크립트 파일(app.js)을 만들어 HTML에 연결하고, 간단한 코드(alert)로 동작을 확인하는 방법”을 알아봤습니다. 프로젝트가 커지더라도 파일을 분리해서 관리하면 훨씬 편리하니, 처음부터 이런 구조를 익혀두면 좋습니다.
이제 마음껏 app.js 안에 원하는 로직을 추가해 보세요!
계산기 예제를 만들면서, 버튼 이벤트와 값 계산, 화면 표시 업데이트 등 재미있는 기능들을 하나씩 배워나가실 수 있을 겁니다.
즐거운 코딩 되세요!