๐ง ํจ์
๐ฅจ ํจ์ ์ ์ธํ๊ธฐ
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(์ฝ๋ฐฑ ํจ์, ์๊ฐ)
'Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] DOM์ ๊ธฐ์ด (0) | 2023.08.26 |
---|---|
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ NaN ํ์ธ๋ฒ (0) | 2023.07.12 |
์๋ฐ์คํฌ๋ฆฝํธ(JS) ๊ธฐ์ด ๊ฐ๋ (2) (1) | 2023.07.10 |
์๋ฐ์คํฌ๋ฆฝํธ(JS) ๊ธฐ์ด ๊ฐ๋ (1) (0) | 2023.07.06 |