
- 코드에서 사용할 수 있는 데이터와 동작의 집합인 객체이다.
- console.log()를 활용하여 콘솔에 값을 출력할 수 있다.
- ex.
console.log('Hello');
// 출력값 : Hello
- // : 한 줄 주석. 한 줄을 주석으로 처리
- /* */ : 여러 줄 주석. 여러 줄을 주석으로 처리하며, /* 부터 */까지의 범위를 주석으로 처리
- ex.
// 이건 한 줄 주석입니다.
/* 이
건
여
러
줄
주
석 */
- 숫자
- BigInt
- 문자열
- Bool
- Null
- Undefined
- Symbol
- 객체
- 더하기(+) : 문자열을 연결할 때에도 사용
- 빼기(-)
- 곱하기(*)
- 나누기(/)
- 나머지(%)
- 각 인스턴스의 속성에 접근할 수 있다.
- .length() : 문자열의 길이를 확인할 때 사용
- .toUpperCase() : 대문자로 반환
- .trim() : 앞뒤 공백 제거
- .startsWith() : 해당 문자열이 특정 문자로 시작하는지 확인(true/false 반환)
- Math.random() : 0~1 사이의 난수 제공(0~50 사이의 난수를 얻고 싶다면 '* 50'을 추가)
- Math.floor() : 소수를 입력받아 가장 가까운 정수로 반환
- 변수 생성 키워드 : var, let, const
- 변수 이름 규칙
- 변수 값의 데이터 유형을 확인할 때 사용한다.
- 오른쪽에 있는 값의 유형을 반환한다.
- ex.
const fruit = 'apple';
console.log(typeof fruit);
// 출력값 : string
- if문
if (true) {
console.log('True');
}
- if...else문
- else if문
- switch문
let athleteFinalPosition = 'first place';
switch (athleteFinalPosition) {
case 'first place':
console.log('You get the gold medal!');
break;
case 'second place' :
console.log('You get the silver medal!');
break;
case 'third place' :
console.log('You get the bronze medal!');
break;
default :
console.log('No medal awarded.');
break;
}
- 비교연산자
- 논리연산자
if (stopLight === 'green' && pedestrians === 0) {
console.log('Go!');
} else {
console.log('Stop');
}
- 참과 거짓
let myVariable = 'I Exist!';
if (myVariable) {
console.log(myVariable)
} else {
console.log('The variable does not exist.')
}
// 값이 명시적으로 값은 아니더라도 bool이나 조건문에서 사용될 때 거짓이 아닌 값이 할당되었기 때문에 참으로 평가
let numberOfApples = 0;
if (numberOfApples){
console.log('Let us eat apples!');
} else {
console.log('No apples left!');
}
// 거짓을 나타내는 값인 '0'이 들어가 있기 때문에 거짓으로 평가
- 삼항 연산자
const apple = 'red';
apple === 'purple' ? console.log('True') : console.log('False');
// False 출력
- function 키워드를 이용한다.
- 함수 이름 옆에는 소괄호가 붙는다.
- 중괄호{}를 이용해 함수의 본문 작성한다.
- ex.
function greetWorld() {
console.log('Hello, World!');
}
- 매개변수 : 함수 호출 시 함수에 전달될 정보를 위한 자리 표시자로 사용
- 인수 : 함수가 호출될 때 함수에 전달되는 값
- ex.
function sayThanks(name) {
console.log('Thank you for your purchase, ' + name + '! We appreciate your business.');
}
sayThanks('Cole');
- 매개변수에 초기값을 지정해주면 인수로 값이 전달되지 않아도 해당 값을 초기값으로 사용한다.
function makeShoppingList(item1 = 'milk', item2 = 'bread', item3 = 'eggs'){
console.log(`Remember to buy ${item1}`);
console.log(`Remember to buy ${item2}`);
console.log(`Remember to buy ${item3}`);
}
- 함수에서 다시 값을 반환하기 위해서는 'return'을 사용한다.
- 함수 내에서 다른 함수를 사용할 수 있다.
function monitorCount(rows, columns) {
return rows * columns;
}
function costOfMonitors(rows, columns) {
return monitorCount(rows, columns) * 200;
}
const totalCost = costOfMonitors(5, 4);
console.log(totalCost);
- 표현식 안에 함수를 정의한다.
- 함수 표현식에서는 함수 이름이 생략되는데, 이를 익명함수라고 한다.
const plantNeedsWater = function(day) {
if (day === 'Wednesday') {
return true;
} else {
return false;
}
}
console.log(plantNeedsWater('Tuesday'));
- () => 와 같이 뚱뚱한 화살표 표기법 사용한다.
- function 화살표 생략 가능하다.
- 매개변수가 하나인 경우에는 소괄호 생략 가능하다.
- 함수 본문이 한 문장으로만 구성된 경우 중괄호 생략 가능하다.
const plantNeedsWater = (day) => {
if (day === 'Wednesday') {
return true;
} else {
return false;
}
};
const plantNeedsWater = day => day === 'Wednesday' ? true : false;
변수가 프로그램 어디에서 접근 가능한지를 결정하는 범위이다.
선언 위치와 방식에 따라 달라진다.
- 프로그램 전체에서 접근 가능한 스코프이다.
const globalMessage = 'Hello, world!'; // 전역 변수 globalMessage
function sayHello() {
console.log(globalMessage); // 어디서든 접근 가능
}
sayHello();
console.log(globalMessage); // 가능
- 블록 { } 안에서만 유효한 스코프이다.
function checkBlock() {
if (true) {
let blockScoped = 'Inside block’; // 지역 변수 blockScoped
console.log(blockScoped); // 가능
}
// console.log(blockScoped); // ❌ 접근 불가, 블록 밖이므로
}
- 전역 네임 스페이스에 변수가 너무 많거나, 이름이 겹치는 상황이다.
- 코드 관리가 어엽고, 버그 발생 가능성이 높아진다.
const data = 'something';
const data = 'something else'; // ❌ 같은 이름 재사용 -> 위험
데이터 목록을 저장하는 자료구조이다.
여러 데이터를 한 번에 관리할 수 있다.
- 각 항목은 인덱스를 가진다.
- 인덱스는 0부터 시작한다.
- 배열 이름[인덱스]
const fruits = ['apple', 'banana', 'cherry’];
console.log(fruits[0]); // apple
fruits[1] = 'mango';
console.log(fruits); // ['apple', 'mango', 'cherry’]
console.log(fruits.length); // 3
- .push() → 배열 끝에 요소 추가
- .slice() → 배열 일부 추출
- .pop() → 배열 끝 요소 제거
- .shift() → 배열 첫 요소 제거
fruits.push('orange');
console.log(fruits); // ['apple', 'mango', 'cherry', 'orange’]
fruits.slice(1, 2);
console.log(fruits); // ['mango', 'cherry']
fruits.pop();
console.log(fruits); // ['apple', 'mango', 'cherry’]
fruits.shift();
console.log(fruits); // ['mango', 'cherry']
- 함수 안에서 배열을 바꾸면, 함수 밖에서도 변경이 유지된다. (mutate)
function addNumber(arr) {
arr.push(4);
}
const nums = [1, 2, 3];
addNumber(nums);
console.log(nums); // [1, 2, 3, 4]
- 인덱스를 연쇄적으로 사용하여, 배열 안에 배열을 넣을 수 있다.
const nested = [[1, 2], [3, 4]];
console.log(nested[1][0]); // 3
반복 작업의 자동화한다.
매번 코드를 쓰지 않고, 반복 수행 가능하다.
- 기본 구조 for (초기값; 조건; 증감) { ... }
for (let i = 0; i < 5; i++) {
console.log(i); // 0 1 2 3 4
}
- 루프 안에 루프가 있는 구조이다.
const matrix = [[1,2], [3,4]];
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
console.log(matrix[i][j]);
}
}
- 조건이 참인 동안 반복한다.
let x = 0;
while (x < 3) {
console.log(x);
x++;
}
- 최소 한 번 실행 후, 조건 확인 후 반복한다.
let y = 0;
do {
console.log(y);
y++;
} while (y < 3);
- 루프 중간에 종료 가능하게 한다.
- 종료 조건이 없으면 프로그램 에러가 생길 수 있으니, 반드시 조건 or break 키워드 작성이 필요하다.
for (let i = 0; i < 5; i++) {
if (i === 3) break;
console.log(i); // 0 1 2
}
고차 함수(Higher-Order Functions)는 다른 함수를 인자로 받거나, 결과(return)로 반환할 수 있는 함수를 말한다. 즉, 함수를 마치 일반적인 숫자나 문자열처럼 데이터로 다룰 수 있다는 개념을 기반으로 한다.
const isTwoPlusTwo = checkThatTwoPlusTwoEqualsFourAMillionTimes = () => {
for(let i = 1; i <= 1000000; i++) {
if ( (2 + 2) != 4) {
console.log('Something has gone very wrong :( ');
}
}
};
isTwoPlusTwo();
console.log(isTwoPlusTwo.name);
// Write your code below
자바스크립트에서 함수는 일급 객체(First-Class Objects)이다. 이는 함수를 일반적인 데이터 타입(숫자, 문자열, 배열 등)과 동등하게 취급할 수 있다는 의미이며, 다음과 같은 세 가지 능력을 가진다.
|
예시
A. 함수 전달
console.log(checkConsistentOutput(addTwo, 5));
const checkConsistentOutput = (func, val) => {
// ...
}
C. 콜백 함수의 실행 (Executing the Callback)
함수를 전달받은 후, checkConsistentOutput 함수는 자신이 원하는 시점에 그 함수를 실행한다. 전달받은 함수를 나중에 호출한다고 해서 이것을 콜백 함수(Callback Function)라고 부른다.
const checkB = func(val);
checkConsistentOutput는 addTwo의 내부 코드를 알 필요 없이, 단지 func(val)이라고 호출하는 것만으로 외부의 기능을 실행하고 그 결과를 얻을 수 있다.
배열의 각 요소를 순회하며 특정 작업을 수행하는 메소드들을 총칭한다. forEach(), map(), filter(), findIndex(), reduce() 등이 있으며, 이들은 모두 고차 함수로 구현되어 코드의 간결성과 재사용성을 높여준다.
.forEach() : 배열의 각 요소에 대해 지정된 함수를 실행하며, 항상 반환 값이 없다.
data.forEach(n => console.log(n));
.map() : 각 요소를 변형한 값들로 새로운 배열을 만든다.
data.map(n => n * 2);
.filter() : 특정 조건을 만족하는 요소만 모아서 새로운 배열을 만든다.
data.filter(n => n > 25);
.find() : 조건을 만족하는 첫 번째 요소의 값을 찾으면 반환하고 즉시 멈춘다.
data.find(n => n === 30);
.findIndex() : 조건을 만족하는 첫 번째 요소의 인덱스(위치)를 반환한다.
data.findIndex(n => n === 10);
.reduce() : 모든 요소를 순회하며 하나의 최종 누적 값으로 계산하여 반환한다.
data.reduce((acc, n) => acc + n, 0);
객체는 자바스크립트의 모든 데이터 타입과 마찬가지로 변수에 할당하여 사용할 수 있다.
let spaceship = {
'Fuel Type': 'diesel',
color: 'silver'
};
- 객체 리터럴을 만들 때는 {}를 사용한다.
- 객체는 키(Key)와 값(Value)의 쌍으로 이루어진 데이터를 담습니다. 이 쌍을 속성(Property)이라고 부른다.
- 키와 값은 콜론(:)으로 연결하고, 각 키의 값 쌍은 쉼표(,)로 구분한다.

객체 메소드는 객체에 저장된 데이터가 함수일 때 이를 부르는 용어이다. 속성(Property)이 객체가 가지는 것(데이터)이라면, 메소드(Method)는 객체가 할 수 있는 것(동작)이다. 메소드는 객체가 수행하는 동작이나 행동을 정의하는 함수이다. console과 math는 우리가 이미 사용해 본 메소드이다. 키는 메소드의 이름이 되고, 값은 함수가 된다.
const alienShip = {
invade: function () {
console.log('Hello! We have come to dominate your planet.');
}
};
객체는 서로 관련된 데이터(속성)와 기능(메소드)을 모아 놓은 컬렉션이다. 객체 내부의 메서드가 자기 자신(객체)의 다른 속성 데이터에 접근해야 할 때, 바로 this 키워드가 필요하다.
const goat = {
dietType: 'herbivore',
// ...
diet() {
console.log(this.dietType);
};
goat.diet();
- 'this'가 'goat' 객체를 참조하도록 지정함.
this는 "나를 호출한 객체"를 가리킨다. 메소드 안에서 같은 객체 내부의 다른 데이터나 메소드에 접근해야 할 때, this를 사용하면 객체 간의 관계를 명확하게 유지할 수 있다.
객체의 특정 속성 값이 설정되거나 변경될 때마다 특정 함수를 실행하도록 정의하는 접근 속성(Property)의 일종이다. set 키워드를 사용하여 정의하며, 외부에서 속성 값에 값을 할당하는 것처럼 보이지만 실제로는 지정된 함수가 실행되어 값을 처리하고, 이 함수는 새로 설정될 값을 매개변수로 받아 내부 로직을 수행한다. 이를 통해 속성 값의 유효성 검사나 관련 속성 업데이트 등 복잡한 작업을 속성 할당 시 자동으로 수행할 수 있다.
const language = {
set current(name) {
this.log.push(name);
},
log: [],
};
language.current = "EN";
language.current = "FA";
console.log(language.log);
// Expected output: Array ["EN", "FA"]
객체의 특정 속성(Property)에 접근할 때 자동으로 호출되어 해당 속성의 값을 계산하거나 반환하는 함수이다. get 키워드를 사용하여 정의하며, 겉으로는 일반적인 속성(Property)처럼 보이지만, 실제로는 함수를 실행하여 값을 얻는 접근 속성의 한 종류이다. 이를 통해 객체 내부의 변수를 외부에 직접 노출하지 않고 (데이터 캡슐화), 여러 내부 데이터에 기반하여 동적으로 계산된 값을 제공할 수 있게 된다.
const language = {
set current(name) {
this.log.push(name);
},
log: [],
};
language.current = "EN";
language.current = "FA";
console.log(language.log);
// Expected output: Array ["EN", "FA"]
1. 한 줄 주석은 ( ), 여러 줄 주석은 ( )로 표현한다.
2. Math 객체의 ( ) 메서드는 0~1 사이의 난수를 반환한다.
3. switch 조건문에서 모든 case의 값 중 참이 없을 경우, ( )문을 실행한다.
4. 함수가 호출될 때 함수에 전달되는 값을 ( )라고 한다.
5. 이름이 없는 함수를 ( )라고 한다.
6. 스코프는 ( ) 위치에 따라 달라진다
7. 배열의 각 항목은 ( )를 가진다
8. 변수를 const로 선언하면 배열 내부 값은 변경 가능하지만, ( )은 불가능하다
9. 반복문을 만드는 방법으로는 ( )루프, ( )루프, ( )루프를 사용하는 것이 있다
10. 반복문을 중간에 멈추게 하기 위해서는 ( )를 사용하면 된다
11. ( )는 다른 함수를 인자로 받거나, 결과로 반환할 수 있는 함수를 말합니다. 즉, 함수를 마치 일반적인 숫자나 문자열처럼 데이터 다룰 수 있다는 개념을 기반으로 합니다.
12. 배열의 반복 메서드 중 ( )는 배열의 각 요소에 대해 지정된 함수를 실행하지만, 반환 값은 항상 undefined 입니다.
13. 객체 내부의 메서드에서 사용되는 ( )는 해당 메서드를 호출한 객체를 참조합니다. 이를 통해 객체는 자기 자신의 속성에 명확하게 접근할 수 있습니다.
14. 객체에 저장된 데이터가 단순히 값일 때 우리는 이를 속성(Property)라고 부르며, 데이터가 함수일 때 객체가 할 수 있는 동작/기능의 의미로 ( )라고 부릅니다.
15. ( )는 내부 변수에 직접 접근하는 것을 막고, 계산을 통해 값을 제공하여 데이터를 보호합니다.
1. const를 이용하여 변수 age를 선언하고, 값으로 자신의 나이를 할당한 뒤 age가 20보다 크거나 같을 경우 콘솔에 '성인입니다.' 라고 출력하는 조건문을 작성하세요.
2. const를 이용하여 변수 fruit를 선언하고 임의의 값을 할당한 뒤, 해당 변수의 유형이 string이면 콘솔로 'String'을 출력하고 아닐 경우 콘솔로 'Incorrect value'를 출력하는 삼항연산자를 작성하세요.
3. 반복문을 이용하여 Fruit에 addFruit의 요소를 더해, 콘솔에 출력하시오
const Fruit = ['Apple', 'Banana', 'Cherry'];
function addFruit() {
let addFruit = ['Mango', 'Grapes'];
// 채우기
}
}
// 채우기
4. 시험 결과를 새로운 배열 results에 저장하고, 콘솔에 출력하시오
( 시험 점수 60점 이상 : "Pass“ / 60점 미만 : "Fail" )
const scores = [85, 42, 73, 56, 91];
const results = [];
for (let i = 0; i < scores.length; i++) {
// 채우기
}
console.log(results);
5. scores 배열의 모든 점수를 10점씩 올려 가산점을 적용한 새로운 배열 bonusScores를 만들고 싶습니다. [ ]를 채워 코드를 완성해 봅시다.
const scores = [85, 92, 77, 95];
const bonusScores = scores.[ ]score => score + 10);
// 예상 결과: [95, 102, 87, 105]
6. 이번엔 scores 배열의 모든 점수를 합산하여 총점을 계산하고 싶습니다. [ ]를 채워 코드를 완성해 봅시다.
const scores = [85, 92, 77, 95];
const totalScore = scores.[ ]((acc, score) => acc + score, 0);
// 예상 결과: 349
<빈칸 문제>
1. //, /* */
2. random()
3. default
4. 인수
5. 익명함수
6. 선언
7. 인덱
8. 변수 자체를 다른 배열로 재할당
9. for, while, do... while
10. break
11. Higher-Order Functions(고차 함수)
12. .forEach()
13. this 키워드
14. Method(메소드)
15. Getter
<프로그래밍 문제>
1.
const age = 22;
if (age >= 20) {
console.log('성인입니다.');
}
2.
const fruit = 'apple'; // 값은 임의로 할당
typeof fruit === 'string' ? console.log('String') : console.log('Incorrect value');
3.
const Fruit = ['Apple', 'Banana', 'Cherry'];
function addFruit() {
let addFruit = ['Mango', 'Grapes'];
for (let i = 0; i < addFruit.length; i++) {
Fruit.push(addFruit[i]);
}
}
addFruit();
console.log(Fruit);
4.
const scores = [85, 42, 73, 56, 91];
const results = [];
for (let i = 0; i < scores.length; i++) {
if (scores[i] >= 60) {
results.push("Pass");
} else {
results.push("Fail");
}
}
console.log(results);
5. map
6. reduce
출처:
codecademy Learn Javascript
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/set
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/get
Corner Node.js 1
Editor: Larva, Raccoon, Gyeomgyeom
| [Node.js 1팀] 8장. 몽고디비 (0) | 2025.11.21 |
|---|---|
| [Node.js 1팀] 7장. MySQL (0) | 2025.11.14 |
| [Node.js 1팀] 5장. 패키지 매니저, 6장. 익스프레스 웹 서버 만들기 (0) | 2025.11.07 |
| [Node.js 1팀] 3장. 노드 기능, 4장. http 모듈로 서버 만들기 (0) | 2025.10.31 |
| [Node.js 1팀] 2장. 알아둬야 할 JavaScript (0) | 2025.10.10 |