๐Ÿ’ก ๋น„๋™๊ธฐ ์ •๋ฆฌ (2)

๊ถŒ๊ทœ๋ฆฌยท2023๋…„ 5์›” 14์ผ
0

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ปFrontEnd

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

02. ์ฝœ๋ฐฑ ํ•จ์ˆ˜

01. ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์ดํ•ด

  • ์ฝœ๋ฐฑ ํ•จ์ˆ˜ : ๋‹ค๋ฅธ ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜( ์ธ์ž )๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ทธ ํ•จ์ˆ˜ ์ž์ฒด
  • ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ๋ฐ›์€ ํ•จ์ˆ˜๋Š” ์ผ๋‹จ ๋„˜๊ฒจ๋ฐ›๊ณ , ๋•Œ๊ฐ€ ๋˜๋ฉด ๋‚˜์ค‘์— ํ˜ธ์ถœ(called back)ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์ฝœ๋ฐฑํ•จ์ˆ˜์˜ ๊ฐœ๋…
  • ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” null, undefined๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ž๋ฃŒํ˜• ์ „๋‹ฌ ๊ฐ€๋Šฅ
Function dessert (count, eat, good){
	count < 3 ? eatDessert() : goodDessert(); }

Function eatDessert(){
	console.log("๊ฐ„์‹ ๋จน์œผ์„ธ์š”"); }

Function goodDessert(){
	console.log("๊ฐ„์‹ ๊ทธ๋งŒ ๋จน์œผ์„ธ์š”"); }

dessert(4, eatDessert, goodDessert);

์œ„์˜ ์ฝ”๋“œ ๋งˆ์ง€๋ง‰ ์ค„์„ ๋ณด๋ฉด dessert ํ•จ์ˆ˜๋Š” ( 4, eatDessert, goodDessert )๋ฅผ ์ „๋‹ฌ ๋ฐ›๋Š”๋‹ค. ์ด๋•Œ eatDessert, goodDessert๋Š” ํ•จ์ˆ˜์ด๋ฉฐ, ํ•จ์ˆ˜๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ ๋ฐ›๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์ด ํ•จ์ˆ˜๋“ค์„ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ผ ํ•œ๋‹ค.


02. ๋™๊ธฐ , ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

๐ŸŽˆ ๋™๊ธฐ ( ์ˆœ์ฐจ์ ์œผ๋กœ for๋ฌธ์„ ์ฒ˜๋ฆฌํ•˜๊ณ ์‹ถ๋‹ค๋ฉด ๋™๊ธฐ ์ด์šฉ! )

function time(){

        const ์ฒ˜์Œ= Date.now();
        for(let i=0; i<100000; i++){    
        }
        const ๋= Date.now();
        console.log(๋ - ์ฒ˜์Œ +'ms');
}

time();
console.log('๋‹ค์Œ ์ž‘์—…');

์ฝ”๋“œ์„ค๋ช…

์œ„์˜ ์ฝ”๋“œ๋Š” time ํ•จ์ˆ˜๊ฐ€ 100,000๋ฒˆ ๋ฃจํ”„๋ฅผ ๋Œ๊ณ  console.log๋ฅผ ํ†ตํ•ด for๋ฌธ์ด ์‹คํ–‰๋˜๋Š”๋ฐ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ ธ๋Š”์ง€ ์‹œ๊ฐ„์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์ด๋‹ค. ์ด๋•Œ, time( )์„ ํ˜ธ์ถœํ–ˆ์œผ๋‹ˆ๊นŒ 3ms ๊ฐ€ ๋จผ์ € ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ๋‹ค. ๊ทธ ๋‹ค์Œ์œผ๋กœ '๋‹ค์Œ ์ž‘์—…' ๋ฌธ์ž๊ฐ€ ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ๋‹ค.

์ด๋ฅผํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€, for๋ฌธ์ด ์ฒ˜๋ฆฌ๋  ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ฒ˜๋ฆฌ ํ•˜์ง€ ์•Š๊ณ  ์˜จ์ „ํžˆ for๋ฌธ๋งŒ ์‹คํ–‰๋œ ํ›„์— console.log๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ณด์•„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋™๊ธฐ์‹ ์ฝ”๋“œ์ด๋‹ค.

๐ŸŽˆ ๋น„๋™๊ธฐ ( for๋ฌธ์„ ์ฒ˜๋ฆฌํ•  ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•˜๊ณ ์‹ถ๋‹ค๋ฉด ๋น„๋™๊ธฐ ์ด์šฉ! )

function time(){
    setTimeout(()=> {
        const ์ฒ˜์Œ= Date.now();
        for(let i=0; i<100000; i++){    
        }
        const ๋= Date.now();
        console.log(๋ - ์ฒ˜์Œ +'ms');
    },5000)
}

time();
console.log('๋‹ค์Œ ์ž‘์—…');
  • setTimeout : ํŠน์ • ์ฝ”๋“œ ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ผ์ •์‹œ๊ฐ„ ์ง€์—ฐ ํ›„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜

  • ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์— ํ˜ธ์ถœ๋  ์ฝœ๋ฐฑํ•จ์ˆ˜, ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ง€์—ฐ์‹œ๊ฐ„์„ ๋ฐ›์•„์„œ ์ง€์—ฐ์‹œ๊ฐ„ ๋’ค์— ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ( ์ง€์—ฐ์‹œ๊ฐ„์˜ ๋‹จ์œ„๋Š” ms๋กœ , 1000ms๊ฐ€ 1์ดˆ )

์ฝ”๋“œ์„ค๋ช…

์œ„์˜ ์ฝ”๋“œ๋Š” setTimeout ๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋‹ˆ, time ( ) ํ˜ธ์ถœํ•ด๋„ ์ง€์—ฐ ์‹œ๊ฐ„ ๋’ค์— ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. ๋”ฐ๋ผ์„œ '๋‹ค์Œ ์ž‘์—…'์ด๋ผ๋Š” ๋ฌธ์ž๋Š” time( ) ํ•จ์ˆ˜๊ฐ€ ์ง€์—ฐ๋˜๋Š” ๋™์•ˆ ์‹คํ–‰๋˜์–ด ๋จผ์ € ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ๋‹ค.



03. ๋น„๋™๊ธฐ์— callback์„ ๋”ํ•œ๋‹ค๋ฉด ๐ŸŽƒ

function time(callback){
    setTimeout(()=> {
        const ์ฒ˜์Œ= Date.now();
        for(let i=0; i<100000; i++){    
        }
        const ๋= Date.now();
        console.log(๋ - ์ฒ˜์Œ +'ms');
        callback();
    },5000)
}

time(() => {
	console.log('์ž‘์—…์ด ๋๋‚ฌ์Šต๋‹ˆ๋‹ค');
});

console.log('๋‹ค์Œ ์ž‘์—…');

๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ๋ฐ›์€ ํ•จ์ˆ˜(callback)๋Š” ์ผ๋‹จ ๋„˜๊ฒจ๋ฐ›๊ณ , time์ด ํ˜ธ์ถœ๋  ๋•Œ console.log๋ฅผ ํ˜ธ์ถœํ•ด์ค€๋‹ค.


04. ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ

( 1 ) filter( )

  • ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋ฅผ ์ƒˆ๋กœ์šด Array๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

( 2 ) map( )

  • ๋ฆฌํ„ด๊ฐ’(๋ฐ˜ํ™˜๊ฐ’)์ด ์žˆ๋‹ค.
  • ์ƒˆ๋กœ์šด Array๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

( 3 ) forEach( )

  • ๋ฆฌํ„ด๊ฐ’(๋ฐ˜ํ™˜๊ฐ’)์ด ์—†๋‹ค.
  • ๊ธฐ์กด์˜ Array๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

filter ( )

function test() {
	const arr1 = [1,2,3,4,5];
    const arr2 = arr1.filter(function(item) {
		return item <= 3;
    });
    console.log(arr2);		//3,4,5
}


1. map( ) vs forEach( ) : ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š”๊ฐ€?

  • ์›๋ž˜ ๋ฐฐ์—ด์— ์žˆ๋˜ ์š”์†Œ์— 2๋ฅผ ๊ณฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ

map( )

const arr = [1,2,3,4,5];
const newArr = arr.map((item)=> item*2);
console.log(newArr);

forEach( )

const arr = [1,2,3,4,5];
const newArr = arr.forEach((item)=> item*2);
console.log(newArr);


map๊ณผ ๋™์ผํ•œ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ forEach๋Š” ์™œ undefined์ผ๊นŒ?

๐Ÿšจ map์€ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ˜๋ฉด, forEach๋Š” ๊ธฐ์กด์˜ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝ์‹œํ‚ค๋Š” ๋ฉ”์„œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— map๊ณผ ๋™์ผํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

const arr = [1,2,3,4,5];
const newArr = [];
arr.forEach((item)=> newArr.push(item*2));
console.log(newArr);

์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ forEach๋Š” ๋นˆ๋ฐฐ์—ด์— ๋ฐ”๋กœ ์ฑ„์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋นˆ๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์ฃผ๊ณ  push๋กœ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•œ๋‹ค.


2. map( ) vs forEach( ) : ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฐ€?

map( )

const arr = [1,2,3,4,5];
const a = arr.map(function (item){
	return item;	
});

console.log(a);

forEach( )

const arr = [1,2,3,4,5];
const a = arr.forEach(function (item){
	return item;	
});

console.log(a);

๐Ÿšจ๋‹ค์‹œ ์ •๋ฆฌํ•˜๋ฉด, forEach๋Š” ๊ธฐ์กด์˜ Array๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  map์€ ์ƒˆ๋กœ์šด Array๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


05. ์ฝœ๋ฐฑ์ง€์˜ฅ

  • ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์ต๋ช…ํ•จ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์—์„œ ๋˜ ๋‹ค์‹œ ์ฝœ๋ฐฑ ์•ˆ์— ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋˜์–ด ์ฝ”๋“œ์˜ ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ค€์ด๊ฐ๋‹นํ•˜๊ธฐ ํž˜๋“ค ์ •๋„๋กœ ๊นŠ์–ด์ง€๋Š” ํ˜„์ƒ

  • ์—๋Ÿฌ ํ•ด๊ฒฐ๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์šฐ๋ฉฐ, ๊ฐ€๋…์„ฑ์ด ์—†๋‹ค.

์ต๋ช…ํ•จ์ˆ˜

ํ•จ์ˆ˜๋ช… ๋Œ€์‹  ๋ณ€์ˆ˜๋ช…์— ํ•จ์ˆ˜ ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌํ˜„ ๋ฐฉ์‹

let hello = function(){
	document.write("Hello World!");
};

hello(); // Hellow World!

์ฝœ๋ฐฑ์ง€์˜ฅ ์˜ˆ์‹œ

์ฝœ๋ฐฑ์ง€์˜ฅ ํƒˆ์ถœ ๋ฐฉ๋ฒ•

  1. ๊ธฐ๋ช…ํ•จ์ˆ˜ ์‚ฌ์šฉ
  2. Promise, Generator, async/await ์‚ฌ์šฉ
profile
๊ธฐ๋ก์žฅ ๐Ÿ“

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