14์ผ์ฐจ ์‹œ์ž‘....๐Ÿ˜‹

์กฐ๋™ํ˜„ยท2022๋…„ 7์›” 19์ผ
0

[๊ต์œก]ย javascript

๋ชฉ๋ก ๋ณด๊ธฐ
1/2
post-thumbnail

๐Ÿ“Œ๋žŒ๋‹ค ํ•จ์ˆ˜๋ž€? ๐Ÿค”

์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜์—์„œ ๋”์šฑ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜ ํ‘œํ˜„์‹

// ๊ธฐ๋ณธ ํ•จ์ˆ˜
function test(num1, num2) {
	return num1+num2;
};

// ๋žŒ๋‹ค ํ•จ์ˆ˜
(num1, num2) => num1+num2;


๐Ÿ“Œmap ํ•จ์ˆ˜๋ž€? ๐Ÿค”

map ๋‚ด๋ถ€์— ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋“ค์„ ํ•œ๋ฒˆ์”ฉ ์ฐธ์กฐ ๋ฐ ๋ฐ˜๋ณต ํ˜ธ์ถœํ•˜๊ณ  ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ ๊ฐ’๋“ค์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

let names = ['a1', 'a2', 'a3'];
const result = names.map((value) => console.log(value));
// ์œ„์˜ ๊ฒฐ๊ณผ๋กœ 'a1', 'a2', 'a3' ์š”์†Œ๋“ค์ด ํ•œ๋ฒˆ์”ฉ ์ฝ˜์†”์— ์ถœ๋ ฅ๋œ๋‹ค.


๐Ÿ“Œfilter ํ•จ์ˆ˜๋ž€? ๐Ÿค”

1. ๊ธฐ์กด์— ์žˆ๋Š” ๋ฐฐ์—ด์—์„œ ํŠน์ • ๊ฐ’๋“ค๋งŒ ํ•„ํ„ฐ๋งํ•˜์—ฌ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜
2. true๊ฐ€ ๋ฐ˜ํ™˜๋œ index์˜ value ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด ๋ฐ˜ํ™˜

let nums = [1, 2, 3, 4, 5];
let result1 = nums.filter((value) => {
	let isEven = value%2 == 0;
    return isEven;
});

// ๊ฒฐ๊ณผ => [2, 4]


๐Ÿ“Œfind ํ•จ์ˆ˜๋ž€? ๐Ÿค”

๋ฐฐ์—ด์—์„œ find ํ•จ์ˆ˜ ๋‚ด๋ถ€ ๋กœ์ง์„ ๋งŒ์กฑํ•˜๋Š” ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜

let result2 = nums.find((value) => value%2==0);

// ๊ฒฐ๊ณผ => 2


๐Ÿ“Œ๊ฐ์ฒด ๋ถ„ํ•ด ํ• ๋‹น ๐Ÿค”

ํŠน์ • ์˜ค๋ธŒ์ ํŠธ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜๋ช…์œผ๋กœ ์ƒˆ๋กœ์šด ๊ฐ์ฒด์—์„œ ์„ ์–ธ ํ›„ ํŠน์ • ๊ฐ์ฒด๋ฅผ ๋Œ€์ž…ํ•  ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ณ€์ˆ˜๋ช…๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค.

let mem = {num: 1, name: 'a', addr: 'a1'};
let {num, name} = mem;
// num = mem.num;
// name = mem.name;


๐Ÿ“Œ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•˜์ž! ๐Ÿคญ

์ผ๋ฐ˜ ๋ณ€์ˆ˜๋‚˜ ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ์˜ค๋ธŒ์ ํŠธ๋„ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

let useMem = ({num, name}) => {
	console.log(`${num} | ${name}`);
};

useMem({num: 1, name: 'a'});
// ๊ฒฐ๊ณผ => 1 | a


๐Ÿ“Œ๋™์  ํ• ๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ ๐Ÿค”

ํ•จ์ˆ˜ ์ธ์ž ์ „๋‹ฌ ๊ฐœ์ˆ˜์™€ ์ƒ๊ด€ ์—†์ด ๊ฐœ์ˆ˜๋งŒํผ ๋ฐฐ์—ด์— ์ง‘์–ด ๋„ฃ์–ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ๋‹ค.

function useFunc(...args) {
	console.log(args);
};

useFunc(1, 2, 3);
// ๊ฒฐ๊ณผ => args = [1, 2, 3]

useFunc(1, 2, 'a');
// ๊ฒฐ๊ณผ => args = [1, 2, 'a']


๐Ÿ“Œfor๋ฌธ์˜ ํ™œ์šฉ ๐Ÿค”

for ๋ฌธ : ์ผ๋ฐ˜์ ์ธ for ๋ฌธ
for in ๋ฌธ : ๋ฐ˜๋ณต ์กฐ๊ฑด ์„ ์–ธ ์Šคํ‚ต ๊ฐ€๋Šฅ
forEach ๋ฌธ : ๋‚ด๋ถ€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜
for of ๋ฌธ : ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹Œ value ๊ฐ’์„ ๊ฐ€์ ธ์˜ด

let names=['a1', 'a2', 'a3'];

for(let i=0; i<names.length; i++) {
	console.log(names[i]);
}

for(let i in names) {
	console.log(names[i]);
}

names.forEach((value) => {
	console.log(value);
});

for(let value of names) {
	console.log(value);
}


๐Ÿ“ŒTimeout ๐Ÿค”

  • ์‹œ๊ฐ„์„ ์ง€์—ฐ์‹œํ‚จ ํ›„ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ•จ์ˆ˜
  • ๋น„๋™๊ธฐ ํ™˜๊ฒฝ์œผ๋กœ ์ž‘์—…ํ•œ๋‹ค.

    ์ฒซ ๋ฒˆ์งธ ์ธ์ž : ์ฝœ๋ฐฑ ํ•จ์ˆ˜
    ๋‘ ๋ฒˆ์งธ ์ธ์ž : ์ง€์—ฐ ์‹œ๊ฐ„

setTimeout(() => {
	console.log('aa');
}, 5000);
// ๊ฒฐ๊ณผ => 5์ดˆ ์ดํ›„์— 'aa'


๐Ÿ“Œcallback hell ๐Ÿค”

1. ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ๋‹ค๋ฅธ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค depth์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง„๋‹ค.
2. ์‹คํ–‰์ด ๋๋‚˜์ง€ ์•Š์€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ์Šคํƒ ์˜์—ญ์— ๊ณ„์† ์กด์žฌํ•ด ๋ฆฌ์†Œ์Šค ๋ถ€ํ•˜๊ฐ€ ์ปค์ง„๋‹ค.

promise๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ

๐Ÿ’ก ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ž„์˜์ ์œผ๋กœ ์ˆœ์ฐจ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—… (๋™๊ธฐ ์ž‘์—… X)

// callback ํ•จ์ˆ˜
function order(menu, callback) {
	const delay = Math.floor(Math.random() * 5000 + 5000);
	setTimeout(() => {
		console.log(`${menu}๊ฐ€ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.`);
		callback(menu);
	}, delay);
}

order('๋ฐ€ํฌํ‹ฐ', (menu) => {
	order('์ƒŒ๋“œ์œ„์น˜', (menu) => {
		order('์•„์ด์Šคํฌ๋ฆผ', (menu) => {

		});
	});
});


๐Ÿ“Œpromise ๐Ÿค”

๋น„๋™๊ธฐ ์ž‘์—…์„ ์ž„์˜์ ์œผ๋กœ ์ˆœ์ฐจ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด์ด๋ฉฐ ์—๋Ÿฌ ์ฒ˜๋ฆฌ์— ์œ ์šฉํ•˜๋‹ค.

  • Promise ๊ฐ์ฒด ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
    1. ํ•จ์ˆ˜ ๋‚ด๋ถ€์— Promise ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    2. Promise ๊ฐ์ฒด๋Š” (resolve, reject)๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š”๋‹ค.
    3. Promise ๊ฐ์ฒด ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ๋น„๋™๊ธฐ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด setTimeout() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    4. ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด resolve๋ฅผ ํ†ตํ•ด ์™„๋ฃŒ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    4-1. ์ž‘์—…์ด ์‹คํŒจํ•˜๋ฉด reject๋ฅผ ํ†ตํ•ด ์‹คํŒจ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    5. ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ดํ›„ then API๋ฅผ ํ†ตํ•ด resolve Promise ๊ฐ์ฒด๋ฅผ ๋ฐ›๋Š”๋‹ค.
    5-1. ์ž‘์—… ์‹คํŒจ ์‹œ, catch API๋ฅผ ํ†ตํ•ด reject Promise ๊ฐ์ฒด๋ฅผ ๋ฐ›๋Š”๋‹ค.
    6. then/catch API์—์„œ๋Š” ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•ด ํŠน์ • ๊ฐ’์ด๋‚˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ return ํ•œ๋‹ค.
// Promise ๊ฐ์ฒด
function orderPromise(menu) {
	return new Promise((resolve, reject) => {
		const delay = Math.floor(Math.random() * 5000 + 5000);
		let status = Math.floor(Math.random() * 2);
		setTimeout(() => {
			console.log(`${menu}๊ฐ€ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.`);
			if(status == 0) return reject(menu);
			resolve();
		}, delay);
	});
}

// reject๋ฅผ ์œ„ํ•œ Promise ๊ฐ์ฒด
function reOrder(menu) {
	return new Promise((resolve, reject) => {
		const delay = Math.floor(Math.random() * 5000 + 5000);
		setTimeout(() => {
			console.log(`${menu}๊ฐ€ ๋‹ค์‹œ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.`);
			resolve();
		}, delay);
	});
}

// Promise ๊ฐ์ฒด ์‹คํ–‰
orderPromise('๋ฐ€ํฌํ‹ฐ')
	.catch(function(menu) {console.log(`${menu}๊ฐ€ ์†Œ์ง„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.`); return reOrder(menu);})
	.then(function() {return orderPromise('์ƒŒ๋“œ์œ„์น˜');})
	.catch(function(menu) {console.log(`${menu}๊ฐ€ ์†Œ์ง„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.`); return reOrder(menu);})
	.then(function() {return orderPromise('์•„์ด์Šคํฌ๋ฆผ');})
	.catch(function(menu) {console.log(`${menu}๊ฐ€ ์†Œ์ง„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.`); return reOrder(menu);})
	.then(function() {console.log('์ข…๋ฃŒ');});


๐Ÿ“Œfetch ํ•จ์ˆ˜ ๐Ÿค”

  • JSON ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™€ Promise ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ์ ์ด๋‚˜ ํŠน์ • ์‹œ์ ์— JSON ํŒŒ์ผ์„ ์ฝ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

    1. ์ฒซ๋ฒˆ์งธ then์„ ํ†ตํ•ด response ๊ฐ์ฒด์˜ .json() ํ•จ์ˆ˜๋ฅผ return ํ•œ๋‹ค.
    2. ๋‘๋ฒˆ์งธ then์„ ํ†ตํ•ด data๋ฅผ ๋ฐ›์•„์™€ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์‹ค์ œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ ๊ตฌ๋™ ๊ฐ€๋Šฅํ•˜๋‹ค!

  • ์‚ฌ์šฉ ์ด์œ  : ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ธ์ œ ์˜ฌ์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋™๊ธฐ ์ž‘์—…์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
fetch("friends.json")
	.then(function(res) {return res.json();})
	// res.json() : Promise ๊ฐ์ฒด
	.then((data) => {
		data.forEach((value, index) => {
			let li = document.createElement('li');
			li.innerText = value;
			document.querySelector('#friendList').append(li);
		});
	});


profile
๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธํ‹ฐ์ŠคํŠธ๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€