๐Ÿง€  ํ•จ์ˆ˜

 

๐Ÿฅจ  ํ•จ์ˆ˜ ์„ ์–ธํ•˜๊ธฐ

 

function ํ•จ์ˆ˜๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜) {
	๋ช…๋ น๋“ค
}

function example(a, b) {
	console.log(`${a}, ${b}`);
}

 

 

๐Ÿฅจ  ํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜๊ธฐ

 

example(10, 20);	// "10, 20" ์ถœ๋ ฅ

 

 

- ๋งค๊ฐœ๋ณ€์ˆ˜, ์ธ์ˆ˜, return์€ ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

๐Ÿฅจ  ๊ธฐ๋ณธ ๋งค๊ฐœ๋ณ€์ˆ˜

 

- ์—ํฌ๋งˆ์Šคํฌ๋ฆฝํŠธ 2015๋ถ€ํ„ฐ ์ƒˆ๋กญ๊ฒŒ ์ƒ๊ธด ๊ธฐ๋Šฅ

- ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋–„ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ

- ๊ฐ’์„ ์ „๋‹ฌ๋ฐ›์ง€ ๋ชปํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์ด undefined๊ฐ€ ๋˜์–ด ๊ฒฐ๊ณผ๊ฐ€ NaN ์ด ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€

 

function sum(a, b = 1, c = 2) {
	return a + b + c;
}

console.log(sum(3, 4, 5));	// 12
console.log(sum(3, 4));		// 9
console.log(sum(3));		// 6

 

 

 

๐Ÿง€  ์Šค์ฝ”ํ”„

 

๐Ÿฅจ  ์Šค์ฝ”ํ”„(scope), ๋ž€?

 

- ์„ ์–ธํ•œ ๋ณ€์ˆ˜์˜ ์ ์šฉ ๋ฒ”์œ„

- ์–ด๋Š ์œ„์น˜์—์„œ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฐ€๋ฆฌํ‚ด

 

 

๐Ÿฅจ  ์ง€์—ญ ์Šค์ฝ”ํ”„

 

- ๋ณ€์ˆ˜๋ฅผ ํŠน์ • ์˜์—ญ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋•Œ '์ง€์—ญ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค'๊ณ  ํ•จ

- ์ง€์—ญ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ '์ง€์—ญ ๋ณ€์ˆ˜'๋ผ๊ณ  ํ•จ

- var ์˜ˆ์•ฝ์–ด(ES6์ด์ „) ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜๋‚ด์—์„œ ์„ ์–ธํ•  ๊ฒฝ์šฐ ์ง€์—ญ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง

 

 

๐Ÿฅจ  ์ „์—ญ ์Šค์ฝ”ํ”„

 

- ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

- ์ „์—ญ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ '์ „์—ญ ๋ณ€์ˆ˜'๋ผ๊ณ  ํ•จ

- var ์˜ˆ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋””์„œ ์„ ์–ธํ•˜๋“  ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์ธ์‹ํ•จ

- let, const ์˜ˆ์•ฝ์–ด๋กœ ์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜๋Š” '์Šคํฌ๋ฆฝํŠธ ์Šค์ฝ”ํ”„'๋ฅผ ๊ฐ€์ง„๋‹ค๊ณ  ํ•จ

 

 

๐Ÿฅจ  ๋ธ”๋ก ์Šค์ฝ”ํ”„

 

- ์ค‘๊ด„ํ˜ธ {} ์— ๋‘˜๋Ÿฌ์‹ธ์ธ ์˜์—ญ ๋‚ด์—์„œ ์œ ํšจํ•œ ๋ณ€์ˆ˜๋ฅผ '๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„๋‹ค'๊ณ  ํ•จ

- let, const ๋ฅผ ์‚ฌ์šฉํ•ด ๋งŒ๋“  ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง (๋ธ”๋ก ๋ณ€์ˆ˜)

 

 

 

๐Ÿ”ฅ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณ€์ˆ˜ ์ฃผ์˜์‚ฌํ•ญ

 

var ๋ณ€์ˆ˜๋ณด๋‹ค let, const ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

์ „์—ญ ๋ณ€์ˆ˜๋Š” ์ตœ์†Œํ•œ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค

๊ฐ์ฒด ์„ ์–ธ์€ const๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

 

 

 

๐Ÿง€  ํ•จ์ˆ˜ ํ‘œํ˜„์‹

 

 

๐Ÿฅจ  ์ต๋ช… ํ•จ์ˆ˜

 

- ํ•จ์ˆ˜์— ์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜

 

๋ณ€์ˆ˜์— ํ• ๋‹นํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ์ต๋ช… ํ•จ์ˆ˜

 

let multiply = function(a, b) {
	return a * b;
}

 

- ํ•จ์ˆ˜๋ฅผ ๋งˆ์น˜ ํ•˜๋‚˜์˜ ๊ฐ’์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

- ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜๋„ ์žˆ๊ณ , ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ธธ ์ˆ˜๋„ ์žˆ์Œ

 

 

๐Ÿฅจ  ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜

 

- ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋Š” ํ•จ์ˆ˜์ผ ๊ฒฝ์šฐ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋ฉด์„œ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Œ

- ํ•จ์ˆ˜๋ฅผ ์‹ ํ˜•ํƒœ๋กœ ์„ ์–ธํ•˜๋ฏ€๋กœ ๋งˆ์ง€๋ง‰์— ์„ธ๋ฏธ์ฝœ๋ก  (;) ๋ถ™์—ฌ์•ผํ•จ

 

(function(๋งค๊ฐœ๋ณ€์ˆ˜) {
	...
} (์ธ์ˆ˜);

(function(a, b) {
	console.log(a*b);
} (5, 10);		// ์ฝ˜์†” ์ฐฝ์— '50'์ถœ๋ ฅ

 

 

๐Ÿฅจ  ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

 

- ์—ํฌ๋งˆ์Šคํฌ๋ฆฝํŠธ 2015 ๋ถ€ํ„ฐ => ๋ฅผ ์ด์šฉํ•œ ํ™”์‚ดํ‘œ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•จ

- ํ•จ์ˆ˜๋ฅผ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋งŽ์ด ์‚ฌ์šฉ

 

(๋งค๊ฐœ๋ณ€์ˆ˜) => {ํ•จ์ˆ˜ ๋‚ด์šฉ}

 

 

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์„ ๋•Œ

const hi = () => {
	return 'hi';
}

- ๊ด„ํ˜ธ() ์•ˆ์— ๋น„์›Œ๋‘ 

 

 

ํ•จ์ˆ˜๊ฐ€ ํ•œ์ค„์ผ ๋•Œ

const hi = () => return 'hi';

- ์ค‘๊ด„ํ˜ธ ์ƒ๋žต ๊ฐ€๋Šฅ

 

 

ํ•จ์ˆ˜์‹์— return๋ฌธ๋งŒ ์žˆ์„ ๋•Œ

const hi = () => 'hi';

- return ๋„ ์ƒ๋žต๊ฐ€๋Šฅ

 

 

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ์ผ ๋•Œ

const hi = user => console.log(`${user}๋‹˜, ์•ˆ๋…•ํ•˜์„ธ์š”`);

- ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ด„ํ˜ธ() ์ƒ๋žต ๊ฐ€๋Šฅ

 

 

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 2๊ฐœ ์ด์ƒ์ผ ๋•Œ

const hi = (user, id) => console.log(`${id}, ${user} ๋‹˜ ์•ˆ๋…•ํ•˜์„ธ์š”`);

 

 

๐Ÿฅจ  ์ฝœ๋ฐฑ ํ•จ์ˆ˜(callback function)

 

- ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

- addEventListner() ํ•จ์ˆ˜์—์„œ ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ๋„ฃ๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๊ฐ€ ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ผ๊ณ  ํ•จ

- ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋‹ค๋ฅด๊ฒŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํ•จ์ˆ˜์ด๋ฆ„์— ๊ด„ํ˜ธ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ด๋ฆ„๋งŒ ์ž‘์„ฑํ•ด์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹  ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ

 

const button = documnet.querySelector("button");

function display() {
	alert("ํด๋ฆญ!");
}

button.addEventListner("click", display);

 

 

 

โ–ถ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํ•จ์ˆ˜๊ฐ€ 1๊ธ‰ ์‹œ๋ฏผ

 

- 1๊ธ‰ ์‹œ๋ฏผ(first-class citizen) ์กฐ๊ฑด

1. ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

2. ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

3. ๋‹ค๋ฅธ ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” 'ํ•จ์ˆ˜'๊ฐ€ 1๊ธ‰ ์‹œ๋ฏผ์ด๋‹ค.

 

 

 

๐Ÿง€  ์ „๊ฐœ ๊ตฌ๋ฌธ

 

์ „๊ฐœ๊ตฌ๋ฌธ(spread syntax)์€ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ๊ฐ’์ด ๋‹ค์–‘ํ•œ ์ž๋ฃŒ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ธ์ˆ˜๋กœ ๋„˜๊ฒจ์ฃผ๊ฑฐ๋‚˜ ๋ฐฐ์—ด๊ณผ ๋ฐฐ์—ด์„ ํ•ฉํ•  ๋•Œ์ฒ˜๋Ÿผ ๋ฐฐ์—ด์„ ํ•˜๋‚˜์˜ ๋ฉ์–ด๋ฆฌ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

 

๐Ÿฅจ  ์ „๊ฐœ ๊ตฌ๋ฌธ ์ž‘์„ฑ ๋ฐฉ๋ฒ•

 

colors = ["black", "white", "red", "blue", "green"];
console.log(...colors);
/*
black white red blue green
*/

 

- ๋‹ค๋ฅธ ์ •๋ณด๋Š” ํ•„์š”์—†๊ณ  ๊ฐ’๋งŒ ๊บผ๋‚ด ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ „๊ฐœ ๊ตฌ๋ฌธ ์œ ์šฉ

 

 

๐Ÿฅจ  ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜

 

- ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ๋‚˜์ค‘์— ๋ช‡ ๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ๋ฐ›๊ฒŒ ๋ ์ง€ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ (๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜)

 

const add(...numbers) {
    let sum = 0;
    for (let number of numbers) {
    	sum += number;
    }
    return sum;
}

 

- ์ผ๋ถ€๋ถ„์€ ๋ณ€์ˆ˜๋กœ ๋ฐ›๊ณ  ๊ทธ ์™ธ์—๋Š” ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ์Œ

 

const add(first, ...numbers) {
    let sum = first;
    for (let number of numbers) {
    	sum += number;
    }
    return sum;
}

 

 

 

๐Ÿง€  ํƒ€์ด๋จธ ํ•จ์ˆ˜

 

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํŠน์ • ์‹œ๊ฐ„์ด ๋˜์—ˆ์„ ๋•Œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๋“ฑ ์‹œ๊ฐ„์„ ์žฌ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์Œ (ํƒ€์ด๋จธ ํ•จ์ˆ˜)

- ์‹คํ–‰ํ•  ํ•จ์ˆ˜์™€ ์‹œ๊ฐ„์„ ์ธ์ˆ˜๋กœ ์ง€์ •

 

 

๐Ÿฅจ  ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ๋ฐ˜๋ณต - setInterval()

 

setInterval(์ฝœ๋ฐฑ ํ•จ์ˆ˜, ์‹œ๊ฐ„)

 

- ์‹œ๊ฐ„์€ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„ ์‚ฌ์šฉ (1000๋ฐ€๋ฆฌ์ดˆ = 1์ดˆ)

- ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์„ ์–ธํ–ˆ๋‹ค๊ฐ€ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•ด๋„ ๋˜๊ณ  ํ•จ์ˆ˜ ํ‘œํ˜„์‹์œผ๋กœ ์„ ์–ธํ•˜๋ฉด์„œ ๋™์‹œ์— ์‹คํ–‰ ๊ฐ€๋Šฅ

 

 

๐Ÿฅจ  ๋ฐ˜๋ณต ์‹คํ–‰ ๋ฉˆ์ถ”๊ธฐ - clearInterval()

 

clearInterval(ํƒ€์ด๋จธ)

 

- setInterval() ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•˜๊ธฐ ์ „๊นŒ์ง€ ์‹คํ–‰๋จ

- setInterval() ์˜ ๋ฐ˜๋ณต์„ ๋ฉˆ์ถ”๋Š” ํ•จ์ˆ˜

- setInterval() ์— ํƒ€์ด๋จธ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์–ด์„œ clearInterval() ๊ด„ํ˜ธ์•ˆ์— ์ด๋ฆ„์„ ๋„ฃ์–ด์„œ ์ง€์ •

 

const timer = setInterval(() => {
  console.log("hi?");
}, 3000);

clearInterval(timer);	// ํƒ€์ด๋จธ ์ข…๋ฃŒ

 

- ๋ณดํ†ต ํŠน์ • ํšŸ์ˆ˜ ๋˜๋Š” ์‹œ๊ฐ„๋งŒํผ ๋ฐ˜๋ณต ํ›„ ์ข…๋ฃŒํ•˜๋„๋ก ์„ค์ •ํ•จ

 

 

๐Ÿฅจ  ํŠน์ • ์‹œ๊ฐ„ ์ดํ›„์— ์‹คํ–‰ํ•˜๊ธฐ - setTimeout()

 

- ์ง€์ •ํ•œ ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„์— ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์‹คํ–‰

 

setTimeout(์ฝœ๋ฐฑ ํ•จ์ˆ˜, ์‹œ๊ฐ„)