Transparent White Star

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/JavaScript

var์™€ let์˜ ์ฃผ์š” ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด…์‹œ๋‹ค ! ๐Ÿ˜Š์Šค์ฝ”ํ”„(Scope)var: ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ฆ‰, ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๋ฉฐ, ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ ๊ฒฝ์šฐ, ๋ธ”๋ก({}) ๋‚ด์—์„œ ์„ ์–ธ๋œ ๊ฒƒ๊ณผ ์ƒ๊ด€์—†์ด ํ•จ์ˆ˜ ์ „์ฒด์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.let: ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ฆ‰, ์ค‘๊ด„ํ˜ธ({})๋กœ ๋ฌถ์ธ ๋ธ”๋ก ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๋ฉฐ, ๋ธ”๋ก ์™ธ๋ถ€์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…(Variable Hoisting)var: ์„ ์–ธ์ด ํ˜ธ์ด์ŠคํŒ…(๋ณ€์ˆ˜ ์„ ์–ธ์ด ์ฝ”๋“œ์˜ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง€๋Š” ํ˜„์ƒ)๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ดˆ๊ธฐํ™”๋Š” ํ˜ธ์ด์ŠคํŒ…๋˜์ง€ ์•Š์•„ undefined ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.let: ์„ ์–ธ์€ ํ˜ธ์ด์ŠคํŒ…๋˜์ง€๋งŒ, ์ดˆ๊ธฐํ™”๊ฐ€ ํ˜ธ์ด์ŠคํŒ…๋˜์ง€ ์•Š์•„์„œ ์ดˆ๊ธฐํ™” ์ „ ์ ‘๊ทผํ•˜๋ฉด ReferenceEr..
๐Ÿ“š then()์•ž์„  ๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๋“ฑ๋ก๋œ ์ฝœ๋ฐฑ์„ ์‹คํ–‰ํ•ด์ค€๋‹ค.then()์€ Promise๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค1. fetch ํ•จ์ˆ˜๊ฐ€ url๋กœ request๋ฅผ ๋ณด๋‚ด๋ฉด Promise Pending ์ƒํƒœ๋ฅผ ๋ฆฌํ„ด.2. Promise๊ฐ€ Fulfilled ์ƒํƒœ๊ฐ€ ๋˜๋ฉด Promise์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ์ฝœ๋ฐฑ์˜ ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ๋‹ค.3. ๋งŒ์•ฝ, ์ฝœ๋ฐฑ์ด Promise๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด then ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฆฌํ„ดํ•œ Promise๋„ ๋™์ผํ•œ ์ƒํƒœ์™€ ๊ฒฐ๊ณผ ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.4. ์ฝœ๋ฐฑ์ด Promise๊ฐ€ ์•„๋‹Œ ํ‰๋ฒ”ํ•œ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋ฉด, then ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฆฌํ„ดํ•œ Promise๋Š” FulFilled ์ƒํƒœ๊ฐ€ ๋˜๊ณ  ๋ฆฌํ„ด๊ฐ’์„ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๊ฐ–๊ฒŒ๋œ๋‹ค.  then() ๋ฉ”์†Œ๋“œ์˜ ํ๋ฆ„ํ•œ ์ค„๋กœ ์ •๋ฆฌPromise๊ฐ€ Fulfilled ์ƒํƒœ๊ฐ€ ๋˜๋ฉด(๋น„๋™๊ธฐ ์ž‘์—…์ด ๋๋‚˜๋ฉด) ๋‹ค์Œ ์ž‘..
์ฝœ๋ฐฑ(Callback)์ด๋ž€?์–ด๋–ค ํ•จ์ˆ˜์˜ ์•„๊ทœ๋จผํŠธ๋กœ ์ „๋‹ฌ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฝœ๋ฐฑ ๋˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค์–‘ํ•œ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•ด ์ค€๋‹ค.์ œ๊ณต๋˜๋Š” ๋น„๋™๊ธฐ ํ•จ์ˆ˜์— ์ฝœ๋ฐฑ์„ ๋„˜๊ฒจ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป await ํ•จ์ˆ˜Promise์˜ ์„ฑ๊ณต ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฐ›์•„์˜ค๋ ค๋ฉด ํ•จ์ˆ˜ ์•ž์— await์„ ์‚ฌ์šฉํ•œ๋‹คasync์€ ํ•จ์ˆ˜๋‚˜, ํŒŒ์ผ module์˜ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ module์€ ES6 ๋ชจ๋“ˆ์„ ์˜๋ฏธ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป await์˜ ์—ญํ• fetchํ•จ์ˆ˜๋Š” Promise ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.fetch ์•ž์— await๋ฌธ์ด ์žˆ์œผ๋ฉด Promise๊ฐ€ Fulfilled ์ƒํƒœ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.Promise๋Š” ์„ธ ๊ฐ€์ง€ ์ƒํƒœ๋ฅผ ๊ฐ–๋Š”๋‹ค. Pending (๋ฏธ๊ฒฐ์ •) : ๋น„๋™๊ธฐ ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์„ ๋•Œ Fulfilled (์„ฑ๊ณต) : ๋น„๋™๊ธฐ ์ž‘์—…์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋๋‚ฌ์„ ๋•Œ Rejected (์‹คํŒจ) : ๋น„๋™๊ธฐ ์ž‘์—…์ด ์‹คํŒจํ–ˆ์„ ๋•Œ๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด Promise๊ฐ€ ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ ค์ค€๋‹ค. ์ด๋Š”, await๋กœ ํ™œ์šฉํ•œ๋‹ค.๐Ÿ”’ ..
๐Ÿ’ก fetch๋ž€ ?Promise ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹คfetch()๋Š” console.log()๋ณด๋‹ค ํ›จ์”ฌ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— printEmployees() ํ˜ธ์ถœ ์•„๋ž˜ ๋” ๋งŽ์€ console.log()๋ฌธ์ด ์žˆ์—ˆ์–ด๋„ ๊ทธ ์ถœ๋ ฅ๋ฌธ๋“ค์ด ๋ชจ๋‘ ์‹คํ–‰๋˜๊ณ  ๋‚˜์„œ function() ์•ˆ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.๐Ÿ’ก Promise ๋ž€ ?๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฐ’์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ์ฒด์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฐ’์„ ์•Œ๋ ค์ค„ ๊ฒƒ์„ '์•ฝ์†'ํ•จfetch๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ”๋กœ ๋Œ๋ ค์ค„ ์ˆ˜๋Š” ์—†์œผ๋‹ˆ๊นŒ, ์ผ๋‹จ Promise๋ฅผ ๋Œ๋ ค์ฃผ๊ณ  ๋‚˜์ค‘์— ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฒฐ๊ณผ๊ฐ’์„ Promise์— ์ฑ„์›Œ ๋„ฃ์–ด์คŒ  Promise๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „ ์ฝœ๋ฐฑ ๊ธฐ๋ฐ˜getEmployees((response) => { json((response, (data)) => { cons..
โœ… || ์—ฐ์‚ฐ์ž|| ์—ฐ์‚ฐ์ž๋Š” ์ขŒ์ธก์˜ ๊ฐ’์ด falsy ๊ฐ’(0, "", false, null, undefined, NaN)์ผ ๋•Œ ์šฐ์ธก์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ user๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด("")์ด๋ฏ€๋กœ currentUser1์€ "Anonymous"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. โœ… ?? ์—ฐ์‚ฐ์ž?? ์—ฐ์‚ฐ์ž๋Š” ์ขŒ์ธก์˜ ๊ฐ’์ด null ๋˜๋Š” undefined์ผ ๋•Œ๋งŒ ์šฐ์ธก์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
yyezzzy
'๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก