js 16

javascript Generator

* Generator: ํ•จ์ˆ˜์˜ ์‹คํ–‰์„ ์ค‘๊ฐ„์— ๋ฉˆ์ท„๋‹ค๊ฐ€ ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ. function ์˜†์— *์„ ์“ฐ๊ณ  ๋‚ด๋ถ€์— yield ํ‚ค์›Œ๋“œ ์‚ฌ์šฉํ•˜๋Š”๋ฐ yield ์—์„œ ํ•จ์ˆ˜ ์‹คํ–‰์„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์Œ. Generator ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด generator์˜ ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋จ. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋Š” ๋‹ค๋ฅธ ์ž‘์—… ํ•˜๋‹ค๊ฐ€ ๋‹ค์‹œ ๋Œ์•„์™€์„œ next() ํ•ด์ฃผ๋ฉด ์ง„ํ–‰์ด ๋ฉˆ์ท„๋˜ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ด์–ด์„œ ์‹คํ–‰ - generator ๊ฐ์ฒด๋Š” next(), return(), throw() ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ * next๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด yield 1์„ ๋งŒ๋‚ ๋•Œ ๊นŒ์ง€ ์‹คํ–‰๋˜๊ณ  ๋ฐ์ดํ„ฐ ๊ฐ์ฒด ๋ฐ˜ํ™˜. function* fn(){ console.log(1); yield 1; console.log(2); yield 2; console.log(3); console.l..

js 2022.11.02

javascript async, await

* async, await๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๋ฏธ์Šค์˜ ๋ฉ”์ธ ๋ฉ”์†Œ๋“œ๋ฅผ ์ฒด์ด๋‹ ํ˜•์‹์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง. * async: ํ•ญ์ƒ ํ”„๋กœ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ async function getName(){ return "Mike"; } console.log(getName()); - ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  then์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ async function getName(){ return "Mike"; } getName().then((name)=>{ console.log(name); }); //Mike - ๋งŒ์•ฝ ๋ฐ˜ํ™˜ ๊ฐ’์ด Promise๋ฉด ๊ทธ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ async function getName(){ return Promise.resolve("tom"); } getName().then((name)=>{ console..

js 2022.11.01

javascript ํ”„๋กœ๋ฏธ์Šค (Promise)

* ํ”„๋กœ๋ฏธ์Šค(Promise): - new Promise๋กœ ์ƒ์„ฑ, ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ์ธ์ˆ˜๋Š” resolve์™€ reject์— ํ•ด๋‹น. resolve๋Š” ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ, reject๋Š” ์‹คํŒจํ–ˆ์„ ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ํ•จ์ˆ˜. => ์ด๋ ‡๊ฒŒ ์–ด๋–ค ์ผ์ด ์™„๋ฃŒ๋˜์–ด ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ '์ฝœ๋ฐฑ(callback)ํ•จ์ˆ˜'๋ผ๊ณ  ํ•จ. -new Promise ์ƒ์„ฑ์ž๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ”„๋กœ๋ฏธ์Šค ๊ฐ์ฒด๋Š” state์™€ result๋ฅผ ํ”„๋กœํผํ‹ฐ๋กœ ๋ฐ›์Œ state : pending(๋Œ€๊ธฐ) / result: undefined state๋Š” ์ดˆ๊ธฐ์— pending์ด์—ˆ๋‹ค๊ฐ€ resolve(value)๋กœ ํ˜ธ์ถœ( ์ฆ‰, ์„ฑ๊ณตํ•˜๋ฉด)๋˜๋ฉด state: fulfilled(์ดํ–‰๋จ) / result: value ๊ฐ€ ๋จ. (์ด๋•Œ์˜ result๋Š” resolve ํ•จ์ˆ˜์—์„œ ์ „๋‹ฌ๋œ ๊ฐ’.) ๋งŒ์•ฝ rej..

js 2022.11.01

javascript ํด๋ž˜์Šค(class)

* class: ES6์— ์ถ”๊ฐ€๋œ ์ŠคํŽ™. class๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‚ด๋ถ€์— constructor๊ฐ€ ์žˆ์Œ. new๋ฅผ ํ†ตํ•ด์„œ ํ˜ธ์ถœํ•˜๋ฉด ์ž๋™์œผ๋กœ ์‹คํ–‰๋จ. - class์— ์žˆ๋Š” constructor ๋ถ€๋ถ„์€ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ’์œผ๋กœ ์ธ์ˆ˜๋ฅผ ๋„˜๊ฒจ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ๋Š” name๊ณผ age๊ฐ€ ๋งŒ๋“ค์–ด์ง - showName์ฒ˜๋Ÿผ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ ๋ฉ”์„œ๋“œ๋Š” User2์˜ ํ”„๋กœํ† ํƒ€์ž…์„ ์ž˜๋ผ๋ƒ„. const User = function(name,age){ this.name = name; this.age = age; this.showName = function () { console.log(this.name); }; }; const mike = new User("Mike",30); class User2 { constructor..

js 2022.11.01

javascript ์ƒ์†, ํ”„๋กœํ† ํƒ€์ž…(Prototype)

* hasOwnProperty: ๊ฐ์ฒด์—๋Š” ์ž์‹ ์ด ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ. true/ false๋กœ ๊ฒฐ๊ณผ ์•Œ๋ ค์คŒ. (๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ด์šฉํ•ด ํ™•์ธ) const user ={ name:'Mike' } undefined user.name 'Mike' user.hasOwnProperty('name') true user.hasOwnProperty('age') false console ์ฐฝ์—์„œ usr ์ž…๋ ฅํ•˜๊ณ  name: "MIke" ์—์„œ ํ™”์‚ดํ‘œ๋ฅผ ๋ˆ„๋ฅด๋ฉด __proto__: Object ๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ์Œ -> ํ”„๋กœํ† ํƒ€์ž… * ํ”„๋กœํ† ํƒ€์ž…: ์ˆจ๊ฒจ์ง„ ํ”„๋กœํผํ‹ฐ. ๊ฐ์ฒด์—์„œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฝ์œผ๋ ค๊ณ  ํ•˜๋Š”๋ฐ ์—†์œผ๋ฉด __proto__์—์„œ ์ฐพ์Œ. ์ด๋ฅผ ์ด์šฉํ•ด ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ. - ๋งŒ์•ฝ hasOwnProperty๊ฐ€..

js 2022.10.31

javascript ๋ฉ”์„œ๋“œ call, apply, bind

*call, apply, bind: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ• ์™ธ์—๋„ ํ•จ์ˆ˜๋ฅผ ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ํ˜ธ์ถœํ–ˆ๋Š”์ง€์™€ ๊ด€๊ณ„์—†์ด this๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ *call: ๋ชจ๋“  ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ this๋ฅผ ํŠน์ •๊ฐ’์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ call์„ ์‚ฌ์šฉํ•˜๊ณ , this๋กœ ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ ๋„˜๊ธฐ๋ฉด ํ•ด๋‹นํ•จ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ call์˜ ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” this๋กœ ์‚ฌ์šฉํ•  ๊ฐ’์ด๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๋กœ ์ „๋‹ฌ๋จ const mike = { name: "Mike", }; const tom = { name: "Tom", }; function showThisName(){ console.log(this.name); } //์—ฌ๊ธฐ์„œ this๋Š” window๋ฅผ ๊ฐ€๋ฆฌ..

js 2022.10.31

javascript setTimeout / setInterval

* setTimeout: ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„ ํ•จ์ˆ˜ ์‹คํ–‰ -2๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์Œ fn: ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ๋’ค ์‹คํ–‰ํ•˜๋Š” ํ•จ์ˆ˜ / 3000: ์‹œ๊ฐ„(=3s) function fn(){ console.log(3) } setTimeout(fn,3000); setTimeout(function(){ console.log(3) },3000); //๋™์ผํ•˜๊ฒŒ ๋™์ž‘ -์ธ์ˆ˜๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋’ค์— , ์ถ”๊ฐ€ํ•ด์„œ ์ ์œผ๋ฉด ๋จ -showName: ํ•จ์ˆ˜ / 3000: ์‹œ๊ฐ„ / 'Mike': ์ธ์ˆ˜. ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ function showName(name){ console.log(name); } setTimeout(showName,3000,'Mike'); โ—Ž clearTimeout(tId): ์˜ˆ์ •๋œ ์ž‘์—…์„ ์—†์• ์คŒ. ..

js 2022.10.31

javascript ํด๋กœ์ €(Closure)

* Closure(ํด๋กœ์ €): ํ•จ์ˆ˜์™€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์˜ ์กฐํ•ฉ - ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋  ๋‹น์‹œ์˜ ์™ธ๋ถ€ ๋ณ€์ˆ˜๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์ƒ์„ฑ๋œ ์ดํ›„์—๋„ ๊ณ„์†ํ•ด์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ - ์™ธ๋ถ€ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ๋๋‚˜์„œ ์™ธ๋ถ€ํ•จ์ˆ˜๊ฐ€ ์†Œ๋ฉธ๋œ ์ดํ›„์—๋„ ๋‚ด๋ถ€ํ•จ์ˆ˜๊ฐ€ ์™ธ๋ถ€ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ * ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์–ดํœ˜์  ํ™˜๊ฒฝ(Lexical environment)๋ฅผ ๊ฐ–๊ณ  ์žˆ์Œ ์˜ˆ์‹œ1) let one; one = 1; function addOne(num) { console.log(one + num); } addOne(5); //6 ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋“ค์ด Lexical ํ™˜๊ฒฝ์— ์˜ฌ๋ผ๊ฐ - let์œผ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜ -> one: ์ดˆ๊ธฐํ™”๊ฐ€ ์•ˆ ๋˜์–ด ์žˆ์Œ = >์‚ฌ์šฉ ๋ชปํ•จ - ํ•จ์ˆ˜์„ ์–ธ๋ฌธ -> ๋ณ€์ˆ˜์™€ ๋‹ฌ๋ฆฌ ๋ฐ”๋กœ ์ดˆ๊ธฐํ™” ๋จ -> addOne: fuction..

js 2022.10.28

javascript ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜, ์ „๊ฐœ ๊ตฌ๋ฌธ(Rest parameters, Spread syntax)

* ์ธ์ˆ˜ ์ „๋‹ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋„˜๊ฒจ์ฃผ๋Š” ํ•จ์ˆ˜์˜ ์ธ์ˆ˜ ๊ฐฏ์ˆ˜๋Š” ์ œํ•œ X ์ธ์ˆ˜์˜ ๊ฐฏ์ˆ˜๋Š” ์ •ํ•ด๋†“๊ณ  ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋„ ์‹ค์ œ ํ˜ธ์ถœ ์‹œ ์ •ํ™•ํžˆ ๊ทธ ๊ฐฏ์ˆ˜๋ฅผ ๋งž์ถฐ ์ค„ ํ•„์š” X ์•„๋ฌด๊ฒƒ๋„ ์ „๋‹ฌํ•˜์ง€ ์•Š์•„๋„ ๋จ -> undefined๋กœ ๋‚˜์˜ด(์—๋Ÿฌ๋ฐœ์ƒ x) function showName(name){ console.log(name); } showName('Mike'); //'Mike' showName('Mike','Tom'); //'Mike' showName(); //undefined ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ• 1. arguments๋กœ ์ ‘๊ทผ: ๊ณผ๊ฑฐ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•, ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์—์„œ๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€ 2. ๋‚˜๋จธ์ง€ ๋งค๊ฐœ ๋ณ€์ˆ˜ ์‚ฌ์šฉ: ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ• ์žˆ์Œ 1. arguments - ํ•จ์ˆ˜๋กœ ๋„˜์–ด ์˜จ ๋ชจ๋“  ์ธ์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ - ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ด์šฉ ๊ฐ€๋Šฅ..

js 2022.10.28

javascript ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น(Destructuring assignment)

- Destructuring assignment: ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ๊ตฌ๋ฌธ์€ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๋ถ„ํ•ดํ•ด์„œ ๊ทธ ๊ฐ’์„ ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ‘œํ˜„์‹ - ๋ฐฐ์—ด ๊ตฌ์กฐ ๋ถ„ํ•ด let [x,y] = [1,2]; console.log(x); //1 console.log(y); //2 let user1์€ let users[0] ์š”์†Œ์™€ ๋™์ผ let users = ['Mike', 'Tom', 'Jane']; let [user1, user2, user3] = users; console.log(user1); //'Mike' console.log(user2); //'Tom' console.log(user3); //'jane' split ์ด์šฉํ•ด๋„ ๊ฐ€๋Šฅ let str = "Mike-Tom-Jane"; let [user1, use..

js 2022.10.04