๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TIL -์ผ๊ฐ„ํ•™์Šต๊ธฐ๋ก/Java Script10

๋น„๋™๊ธฐ ํ๋ฆ„ ์ดํ•ดํ•˜๊ธฐ ๋™๊ธฐ์ ์ด๋ž€(synchronous)? ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ทธ๋ฆผ์œผ๋กœ ์„ค๋ช… ํ•˜์ž๋ฉด... |A์‹œ์ž‘-----------------A์ข…๋ฃŒ| |B์‹œ์ž‘---------------B์ข…๋ฃŒ| A์—…๋ฌด๋ฅผ ๋งˆ์น ๋•Œ๊นŒ์ง€ B์—…๋ฌด๋ฅผ ๋ง‰์•„๋‘๋Š”๊ฒƒ์„ Blocking์ด๋ผ๊ณ ํ•˜๊ณ , ๋๋‚˜๋Š” ์‹œ์ ๊ณผ ์‹œ์ž‘ํ•˜๋Š” ์‹œ์ ์ด ๊ฐ™๊ธฐ๋•Œ๋ฌธ์— ๋™๊ธฐ์ ์ด๋ผ๊ณ  ๋งํ•œ๋‹ค. ๋น„๋™๊ธฐ์ ์ด๋ž€(asynchronous)? |A์‹œ์ž‘-----------------A์ข…๋ฃŒ| |B์‹œ์ž‘---------B์ข…๋ฃŒ| ๋Œ€ํ‘œ์  ๋น„๋™๊ธฐ ํ•จ์ˆ˜์ธ setTimeout ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ์ด๋ ‡๊ฒŒ ์‹คํ–‰๋œ๋‹ค. https://poiemaweb.com/img/event-loop.gif A,B๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์ง„ํ–‰๋œ๋‹ค. ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ ๋˜์ง€์•Š๋Š”๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋‹จ์ˆœํžˆ ์ž‘์—…์ด ์š”์ฒญ๋˜๋ฉด Call Stack์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ๋œ ์ž‘์—…์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰.. 2022. 2. 13.
Call back ํ•จ์ˆ˜๋กœ Method ๋งŒ๋“ค๊ธฐ ํ•™์Šต๋ชฉํ‘œ forEach() ,indexOf(), map(), slice(), reduce(), filter()์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ๋งŒ๋“ค๊ณ  ๋งŒ๋“  ํ•จ์ˆ˜๋ฅผ ์ฝœ๋ฐฑํ•˜์—ฌ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž!๐Ÿ˜Ž (๋น„๋™๊ธฐ์—์„œ ์ฝœ๋ฐฑ์„ ์›ํ™œํžˆ ์“ฐ๊ธฐ์œ„ํ•œ ์„ ํ–‰ํ•™์Šต) ๋งŒ๋“ ๊ฒƒ ์˜ˆ์ œ.slice() _.slice = function (arr, start, end) { let _start = start || 0, _end = end; // ์ž…๋ ฅ๋ฐ›์€ ์ธ๋ฑ์Šค๊ฐ€ ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ, ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋งค์นญ // (ex. -1 => arr.length - 1, -2 => arr.length - 2) // ์ž…๋ ฅ๋ฐ›์€ ์ธ๋ฑ์Šค๋Š” 0 ์ด์ƒ์ด์–ด์•ผ ํ•œ๋‹ค. if (start < 0) _start = Math.max(0, arr.length + start); .. 2022. 1. 24.
Class์™€ Instance ํ•™์Šต๋ชฉํ‘œ ํด๋ž˜์Šค์™€ ์ธ์Šคํ„ด์Šค๋ผ๋Š” ์šฉ์–ด๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. new ํ‚ค์›Œ๋“œ์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. class ํ‚ค์›Œ๋“œ์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ํ˜„์‹ค ์„ธ๊ณ„์˜ ๋ชจ๋ธ์„ ๋ฐ”ํƒ•์œผ๋กœ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์™€ ์†์„ฑ์„ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠน์ง•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ์บก์Šํ™” ์ƒ์† ์ถ”์ƒํ™” ๋‹คํ˜•์„ฑ JavaScript์—์„œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. Prototype์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ƒ์†(Inheritance)์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ์†๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ํ˜„์‹ค ์„ธ๊ณ„์˜ ๋ชจ๋ธ์„ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ž˜์Šค ์ƒ์†์˜ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. Prototype chain์„ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. (__proto__) ๋ฉด์ ‘์— ์ž์ฃผ๋“ฑ์žฅํ•˜๋Š” ๊ฐœ๋…์ด๋ผ๊ณ  ํ•˜๋‹ˆ ์ž˜.. 2022. 1. 22.
Array์™€ Object์˜ ๊ฐ’ ์‚ฌ์šฉํ•˜๊ธฐ ํ•™์Šต๋ชฉํ‘œ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ์ถ”๊ฐ€ํ•˜๊ณ  ์‚ญ์ œํ•˜๊ณ  ์ˆ˜์ •ํ• ์ˆ˜์žˆ๋‹ค. ๋ฐฐ์—ด์—์„œ ํ™œ์šฉํ•  ๋ฉ”์„œ๋“œ๋ฅผ ๋– ์˜ฌ๋ฆด์ˆ˜์žˆ๋‹ค. ๊ฐ์ฒด์—์„œ ํ‚ค์™€ ๊ฐ’์„ ์Œ ํ˜น์€ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ƒ์„ฑ, ์ถ”๊ฐ€, ์‚ญ์ œ, ์ˆ˜์ • ํ• ์ˆ˜์žˆ๋‹ค. ๊ฐ์ฒด์—์„œ ํ™œ์šฉํ•  ๋ฉ”์„œ๋“œ๋ฅผ ๋– ์˜ฌ๋ฆด์ˆ˜์žˆ๋‹ค. ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์กฐํšŒํ•˜๋Š”๊ฒƒ์„ ์„ค๋ช…ํ• ์ˆ˜์žˆ๋‹ค. ๋ฐฐ์—ด ๋ฐฐ์—ด์˜ ๊ฐ’ = ์š”์†Œ(Element) ์ˆœ์„œ = Index(0๋ถ€ํ„ฐ ์‹œ์ž‘) ๋ฐฐ์—ด.length๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด์† ์š”์†Œ์˜ ๊ฐฏ์ˆ˜๋ฅผ ์•Œ์ˆ˜์žˆ๋‹ค. [๋Œ€๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•ด๋งŒ๋“ค๊ณ  ๊ฐ๊ฐ์˜ ์›์†Œ๋Š” ,๋ฅผ ์ด์šฉํ•ด ๊ตฌ๋ถ„ํ•œ๋‹ค.] ์—†๋Š” ์š”์†Œ๋ฅผ ์กฐํšŒํ•˜๋ฉด undefined๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋ฐฐ์—ด ํ™œ์šฉ Method ๋ฐฐ์—ด์˜ํƒ€์ž…์„ ํ™•์ธํ•˜๋Š” ๋ฒ• typeOf ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด object๊ฐ€ ์ถœ๋ ฅ๋˜์–ด ๊ฐ์ฒด์™€ ๊ตฌ๋ถ„ํ• ์ˆ˜์—†์Œ. Array.isArray(ํ™•์ธํ•  ์š”์†Œ) //boolean๊ฐ’์œผ๋กœ ๋ฆฌํ„ดํ•จ(If๋ฌธ์— ๋ฐ”๋กœ ์ .. 2022. 1. 16.
3W_JS_ํด๋กœ์ €ํ•จ์ˆ˜ ํ•™์Šต๋ชฉํ‘œ ํด๋กœ์ € ํ•จ์ˆ˜์˜ ์ •์˜์™€ ํŠน์ง•์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค 1. ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๋ฌธ์ด ํ•จ์ˆ˜์ธ ํ˜•ํƒœ(์™ธ๋ถ€ํ•จ์ˆ˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผ๊ฐ€๋Šฅํ•œ ๋‚ด๋ถ€ํ•จ์ˆ˜) 2. ๋‚ด๋ถ€ํ•จ์ˆ˜๋Š” ์™ธ๋ถ€ํ•จ์ˆ˜์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ์ ‘๊ทผ๊ฐ€๋Šฅํ•˜๋‹ค. 3. ํ•จ์ˆ˜์‹คํ–‰์ด ๋๋‚˜๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•œ๋‹ค.(ํŠน์ •๋ฐ์ดํ„ฐ๋ฅผ ์Šค์ฝ”ํ”„์•ˆ์— ๊ฐ€๋‘ฌ๋‘๊ณ  ๊ณ„์† ์‚ฌ์šฉํ• ์ˆ˜์žˆ๊ฒŒ ํ•œ๋‹ค) 4. ์ •๋ณด์˜ ์ ‘๊ทผ ์ œํ•œ ํด๋กœ์ €๊ฐ€ ๊ฐ–๋Š” ์Šค์ฝ”ํ”„ ๋ฒ”์œ„๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค(์™ธ๋ณ€์ ‘๋‚ด!!!!!!) ํด๋กœ์ €๋ฅผ ์ด์šฉํ•ด ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ด๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฝ”๋”ฉ ํŒจํ„ด์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค ๋ฐœ๊ฒฌํ•œ๊ฒƒ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ „๋‹ฌ์ธ์ž์˜ ์œ ๋ฌด / ์„ ์–ธ์˜ ์œ ๋ฌด์— ๋”ฐ๋ผ ๊ฐ’์ด๋‹ฌ๋ผ์ง„๋‹ค ๋Š๋‚€์  ์‹ค์ œ ํ™œ์šฉ๋ฌธ์— ๋งŽ์ด ์ ์šฉํ•ด๋ด์•ผ๊ฒ ๋‹ค. ์˜ˆ์ œ๋ฅผ ์˜ค๋‹ต๋…ธํŠธ์— ์ •๋ฆฌํ•˜๋ฉด์„œ ๋‹ค์‹œ ๋ด์•ผ๊ฒ ๋‹ค. ๋‹ค์Œ ๊ณต๋ถ€๋ฐฉํ–ฅ ํด๋กœ์ €์™€ ์Šค์ฝ”ํ”„๋ฅผ ์ด์šฉํ•ด ์–ด๋–ค ๋กœ์ง์„ ์งค์ˆ˜์žˆ์„์ง€ ๊ถ๊ธˆํ•˜๋‹ค. 2021. 12. 29.
3W_JS_Scope ํ•™์Šต๋ชฉํ‘œ ์Šค์ฝ”ํ”„์˜ ์˜๋ฏธ์™€ ์ ์šฉ ๋ฒ”์œ„๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค Scope ๋Š” ๋ฒ”์œ„๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ–๊ณ , ๋” ์ž์„ธํžˆ๋Š” ๋ณ€์ˆ˜์˜ ์œ ํšจ๋ฒ”์œ„์˜ ๋œป์„ ๊ฐ–๋Š”๋‹ค ๋‘log๊ฐ€ ๋™์ผํ•œ ๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š”๋“ฏ ํ•˜์ง€๋งŒ message๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์•ˆ์ชฝ ์Šค์ฝ”ํ”„ ({} ์ค‘๊ด„ํ˜ธ๋กœ ๊ตฌ๋ถ„๋จ)์— ์„ ์–ธ ํ• ๋‹น ๋˜์–ด์žˆ์œผ๋ฏ€๋กœ, 4๋ฒˆ์งธ์ค„์—์„  ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•จ. 6๋ฒˆ์งธ์ค„์—์„œ๋Š” ๋ฐ”๊นฅ์—์„œ ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐˆ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅํ• ์ˆ˜ ์—†์Œ. -์Šค์ฝ”ํ”„์˜ ์ฃผ์š” ๊ทœ์น™์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค ์ค‘์ฒฉ ๊ทœ์น™ block scope์™€ function scope(๋ธ”๋ก-์ค‘๊ด„ํ˜ธ๊ธฐ์ค€/ ํ•จ์ˆ˜-ํ•จ์ˆ˜๋กœ ๋‘˜๋Ÿฌ์‹ผ ๋ฒ”์œ„ ) *ํ™”์‚ดํ‘œํ•จ์ˆ˜๋Š” ๋ธ”๋ก ์Šค์ฝ”ํ”„๋กœ ์ทจ๊ธ‰๋จ ์ „์—ญ ์Šค์ฝ”ํ”„์™€ ์ง€์—ญ ์Šค์ฝ”ํ”„ ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ„์˜ ์šฐ์„  ์ˆœ์œ„ (์ง€์—ญ์ด ์šฐ์„ !) ๊น€์ฝ”๋”ฉ - ๋ฐ•ํ•ด์ปค - ๋ฐ•ํ•ด์ปค ์ˆœ์œผ๋กœ ์ถœ๋ ฅ ์ฒซ๋ฒˆ์งธ ์ถœ๋ ฅ์‹œ ์ฒซ์ค„์˜ ์ „์—ญ name์ด ์ถœ๋ ฅ ๋‘.. 2021. 12. 29.
3W_JS_Method expect() - ๋ฆฌํ„ด๊ฐ’์ด ๊ธฐ๋Œ€๊ฐ’๊ณผ ๊ฐ™์€์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜ expect(ํ…Œ์ŠคํŠธํ•˜๋Š”๊ฐ’).๊ธฐ๋Œ€ํ•˜๋Š”์กฐ๊ฑด expect(isEven(3)).to.be.true => 'isEven(3)'์˜ ๊ฒฐ๊ณผ๊ฐ’์€ ์ฐธ(true)์ด์–ด์•ผ ํ•œ๋‹ค' expect(1 + 2).to.equal(3) => 'sum(1, 2)์˜ ๊ฒฐ๊ณผ๊ฐ’์€ 3๊ณผ ๊ฐ™์•„์•ผ(equal) ํ•œ๋‹ค' ๊ธฐ๋Œ€ํ•˜๋Š” ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ matcher ๋ผ๊ณ  ํ•จ. ํ”„๋ ˆ์ž„์›Œํฌ๋„ ์žˆ์Œ (mocha,chai.๋“ฑ) ํ…Œ์ŠคํŠธ๋ฅผ ์‹œํ–‰ํ• ๋•Œ ๊ธฐ๋Œ€ํ•˜๋Š”๊ฐ’์€ ํ‘œํ˜„์‹์ด๊ฑฐ๋‚˜ ํ•จ์ˆ˜์˜ ์‹ค์ œ ์‹คํ–‰ ๊ฒฐ๊ณผ 1) ํ‘œํ˜„์‹: true || false, 1 + 1, 10 * 3 2) ํ•จ์ˆ˜์˜ ์‹คํ–‰: isEven(3), sum(1, 2) ํ•˜์ง€๋งŒ ์—„๊ฒฉํ•˜๊ฒŒ ๋น„๊ตํ•˜์ง€ ๋ชปํ• ๊ฒฝ์šฐ์—” expect('ํ…Œ์ŠคํŠธํ•˜๋Š”๊ฐ’').to.equal('๊ธฐ๋Œ€ํ•˜๋Š”.. 2021. 11. 25.
3W_JS_์Šค์ฝ”ํ”„์™€ ํด๋กœ์ € -๋ณ€์ˆ˜ ์ ‘๊ทผ ๊ทœ์น™์— ๋”ฐ๋ฅธ ์œ ํšจ๋ฒ”์œ„. ์Šค์ฝ”ํ”„์˜ ์˜๋ฏธ์™€ ์ ์šฉ ๋ฒ”์œ„๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค ์Šค์ฝ”ํ”„์˜ ์ฃผ์š” ๊ทœ์น™์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค ์ค‘์ฒฉ ๊ทœ์น™ block scope์™€ function scope ์ „์—ญ ์Šค์ฝ”ํ”„์™€ ์ง€์—ญ ์Šค์ฝ”ํ”„ ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ„์˜ ์šฐ์„  ์ˆœ์œ„ let, const, var ์˜ ์ฐจ์ด ์ „์—ญ ๊ฐ์ฒด(window)์˜ ์ดํ•ด let vscope = 'global'; //์—ฌ๊ธฐ๋ถ€ํ„ฐ function fscope() { let vscope = 'local'; let lv = local variables'; alert(lv); } //์—ฌ๊ธฐ๊นŒ์ง€ local scope fscope(); alert(lv); ์Šค์ฝ”ํ”„ ํŠน์ง• 1. ๋ฐ”๊นฅ ์Šค์ฝ”ํ”„(์ „์—ญ = Global Scope)์˜ ๋ณ€์ˆ˜๋Š” ์•ˆ์ชฝ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. 2. ์•ˆ์ชฝ ์Šค์ฝ”ํ”„(์ง€์—ญ = L.. 2021. 11. 25.
1W _JS_์กฐ๊ฑด๋ฌธ ํ•™์Šต๋ชฉํ‘œ truthy์™€ falsy ๊ฐ€ ์กฐ๊ฑด๋ฌธ์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹ 0 '' undefined null NaN console.log(boolean(์œ„์˜๊ฐ’)); ์€ false๋กœ ํ™•์ธ๋จ. falsy๊ฐ’์„ ์ œ์™ธํ•œ ๊ฐ’ ๋นˆ ๊ฐ์ฒด({})๋‚˜,๋นˆ ๋ฐฐ์—ด([]) ๋˜ํ•œ true๋กœ ํ™•์ธ๋จ. ๋น„๊ต์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•œ ์—„๊ฒฉํ•œ ๋น„๊ต(=== , !==)์— ๋Œ€ํ•ด ์ดํ•ด ==๋Š” Equal Operator ===๋Š” Strict(์—„๊ฒฉํ•œ) Equal Operator 0 ==='0' false // ๊ฐ™์€ 0 ์ด์ง€๋งŒ ํƒ€์ž…(number์™€ string)์„ ๊ตฌ๋ถ„ํ•˜๋ฏ€๋กœ ๊ฑฐ์ง“ ์ถœ๋ ฅ 0 == '0' true // ๊ฐ™์€ 0์ธ๊ฒƒ๋งŒ ํ™•์ธํ•˜๊ณ  ์ฐธ ์ถœ๋ ฅ 0 !== 0 false // ๊ฐ™์€ ํƒ€์ž…๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์œผ๋กœ ์ฐธ์ผ๋•Œ !== ์—ฐ์‚ฐ์ž๋Š” ๊ฑฐ์ง“์„ ์ถœ๋ ฅํ•œ๋‹ค 0 !=='0' true // .. 2021. 11. 15.