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

๊ฐœ๋ฐœ/Javascript11

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์œ ์šฉํ•œ ํ•จ์ˆ˜ ๋ชจ์Œ ๊ฐ์ฒด ํ‚ค ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๊ธฐ โœ๏ธ ๊ฐ์ฒด const originObj = { old1: '๊ฐ’1', old2: '๊ฐ’2', old3: '๊ฐ’3', old4: '๊ฐ’4', old5: '๊ฐ’5' }; const func = ({old1: new1, old2: new2, ...rest}) => { return {new1, new2, rest}; } const newObj = func(originObj); console.log(newObj); โœ๏ธ ๊ฐ์ฒด ๋ฐฐ์—ด const originList = [{ old1: '๊ฐ’1', old2: '๊ฐ’2', old3: '๊ฐ’3', old4: '๊ฐ’4', old5: '๊ฐ’5' }, { old1: '๊ฐ’1', old2: '๊ฐ’2', old3: '๊ฐ’3', old4: '๊ฐ’4', old5: '๊ฐ’5' }]; con.. 2022. 8. 29.
javascript ๊ฐ์ฒด ํ‚ค ์ด๋ฆ„ ๋ณ€๊ฒฝ ๊ฐ์ฒด ํ‚ค ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๊ธฐ (๊ฐ์ฒด ๋ฐฐ์—ด) map ์ธ์ž๋กœ ๊ฐ์ฒด๋ฅผ ๊ตฌ์กฐ๋ถ„ํ•ดํ•˜์—ฌ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋กœ ๋ฆฌํ„ดํ•œ๋‹ค. let origins = [{ old1: 'origins[0].old1', old2: 'origins[0].old2', old3: 'origins[0].old3' }, { old1: 'origins[1].old1', old2: 'origins[1].old2', old3: 'origins[1].old3' }]; let results = origins.map(({ old1: new1, old2: new2, ...rest }) => ({ new1, new2, ...rest })); ๊ฐ์ฒด ํ‚ค ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๊ธฐ (๊ฐ์ฒด) let origin = { old1: 'origins[0].old1', old2.. 2022. 7. 8.
javascript ๋ฐฐ์—ด ๋‚ด ์ค‘๋ณต ๊ฐ’ ๊ตฌํ•˜๊ธฐ ๋ฐฐ์—ด ๋‚ด์—์„œ ์ค‘๋ณต ๊ฐ’์„ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [1, 1, 2, 3, 5] ๋ฐฐ์—ด์—์„œ ์ค‘๋ณต ๊ฐ’์ธ [1] ์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ค‘๋ณต ๊ฐ’์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๋Œ€์ƒ ๋ฐฐ์—ด์ด ๊ฐ์ฒด๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์ด๋ผ๋ฉด ๊ฐ์ฒด์—์„œ ์ค‘๋ณต์„ ๊ฒ€์‚ฌํ•  ๋Œ€์ƒ๋งŒ ์ถ”์ถœํ•œ๋‹ค. (์ค‘๋ณต์ด ๊ฐ์ฒด ๋‚ด ๊ฐ’์ด ์•„๋‹ˆ๋ผ ๊ฐ์ฒด ์ž์ฒด๋ผ๋ฉด JSON.stringify() ๋“ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.) // ๋ฐ์ดํ„ฐ let arr = [{ "name": "ํ™๊ธธ๋™", "phoneNumber": "010-1111-1111" }, { "name": "๊น€๊ธธ๋™", "phoneNumber": "010-2222-2222" }, { "name": "๊ณ ๊ธธ๋™", "phoneNumber": "010-3333-3333" }, { "name": "์„œ๊ธธ๋™", "phoneNumber": ".. 2022. 6. 23.
javascript byte ์ˆ˜ ๊ณ„์‚ฐ euc-kr byte ๊ตฌํ•˜๊ธฐ ํ•œ๊ธ€ ํ•œ ๊ธ€์ž๋‹น 2byte ๊ธฐ์ค€ ๋ฐ”์ดํŠธ ์ˆ˜ ๊ณ„์‚ฐ function calcByteEuckr(str) { return str .split('') .map(s => s.charCodeAt(0))// ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ .reduce((prev, c) => (prev + ((c === 10) ? 2 : ((c >> 7) ? 2 : 1))), 0); // c ๊ฐ’์ด 0~127์‚ฌ์ด์— ์žˆ์œผ๋ฉด 1๋ฐ”์ดํŠธ } ์ตœ๋Œ€ byte ๋งŒํผ๋งŒ ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ function getLimitedByteEuckrText(str, maxByte) { if (!str) return; let b; for (b = i = 0; (c = str.charCodeAt(i)); ) { b += (c === 10) ? 2 : .. 2022. 6. 21.
Object.freeze ๊ฐ์ฒด ๋™๊ฒฐ / ๊ฐ์ฒด ์ฝ๊ธฐ ์†๋„ Object.freeze() ๊ฐ์ฒด์— ์ƒˆ๋กœ์šด ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋กœ ๋ฐ”๊พธ์–ด immutableํ•œ Object๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด๋ฅผ ๋™๊ฒฐํ•˜๋Š” ํ•จ์ˆ˜ ๋™๊ฒฐ๋œ ๊ฐ์ฒด๋Š” ์†์„ฑ์„ ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๋Š” ๋“ฑ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ์‹œ๋„ ์‹œ TypeError ์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฐ์ฒด์˜ ๋ถˆ๋ณ€์„ฑ ์œ ์ง€ ์–•์€ ๋ณต์‚ฌ(1 depth๊นŒ์ง€๋งŒ)๋ฅผ ํ•˜๋ฏ€๋กœ ์ค‘์ฒฉ๋œ ๊ฐ์ฒด๋Š” ๋™๊ฒฐ๋˜์ง€ ์•Š์Œ Object.isFrozen() ๋ฉ”์†Œ๋“œ๋กœ ๊ฐ์ฒด ๋™๊ฒฐ ์—ฌ๋ถ€ ํ™•์ธ ๊ฐ€๋Šฅ const info = { name: 'Anna', age: 19 }; Object.freeze(info); info.age = 20; // ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ info.email = 'hello@gmail.com'; // ์ถ”๊ฐ€๋˜์ง€ ์•Š์Œ const vs. Object.freeze.. 2022. 5. 12.
ES6 Syntax ๋ชฉ์ฐจ Restructing(๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น) Spread Operator(์ „๊ฐœ ๊ตฌ๋ฌธ) Default Parameters(๊ธฐ๋ณธ ๊ฐ’ ๋งค๊ฐœ๋ณ€์ˆ˜) Template Literal(ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด) Arrow Function(ํ™”์‚ดํ‘œ ํ•จ์ˆ˜) for of ... loop 1. Restructuring(๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น) ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ํ•ด์ฒดํ•˜์—ฌ ๊ทธ ๊ฐ’์„ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ‘œํ˜„์‹ 1-1. ๊ฐ์ฒด โœ” ๊ตฌ๋ฌธ ES5 ์—์„œ๋Š” ๊ฐ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•ด์•ผ ํ–ˆ๋‹ค. var info = { myName: 'Anna', myAge: 10 }; var myName = info.myName; var myAge = info.myAge; console.log(myName, myAge);// Anna 10 ES6 ์—์„œ๋Š” ์ค‘๊ด„ํ˜ธ ์•ˆ์—.. 2022. 5. 3.
TypeScript TypeScript ๋ž€? Javascript ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ์ •์  ํƒ€์ž… ๋ฌธ๋ฒ•์„ ์ถ”๊ฐ€ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด JavaScript ์˜ ์ƒ์œ„ ์ง‘ํ•ฉ์œผ๋กœ Microsoft ์—์„œ ๊ฐœ๋ฐœํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ JavaScript์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ TypeScript ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ES6 ์‹ ๊ทœ ๋ฌธ๋ฒ•์„ ํฌํ•จํ•˜๊ณ  ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ์ƒ์†, ๋ชจ๋“ˆ ๋“ฑ์˜ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด์„ ์ œ๊ณตํ•œ๋‹ค. TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TypeScript(.ts) ํŒŒ์ผ์„ Javascript(.js) ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‹คํ–‰ํ•œ๋‹ค. TypeScript vs. JavaScript ๐Ÿง ์†๋„, ์•ˆ์ •์„ฑ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋™์  ํƒ€์ž… ์–ธ์–ด๋กœ ๋Ÿฐํƒ€์ž„ ์†๋„๋Š” ๋น ๋ฅด์ง€๋งŒ, ํƒ€์ž… ์•ˆ์ •์„ฑ์€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ •์  ํƒ€์ž… ์–ธ์–ด๋กœ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ๊ธธ์ง€๋งŒ, ์•ˆ์ •.. 2022. 4. 28.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ / Promise / async / await / fetch ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›๋ž˜ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์–ธ์–ด์ด๋ฉฐ ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ํ˜ธ์ถœ ์Šคํƒ(Call Stack)์ด ํ•˜๋‚˜์—ฌ์„œ ์Šคํƒ ๋‚ด์— ์Œ“์ธ ์ž‘์—…์„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ ์ž‘์—…์ด ๋๋‚˜๊ณ  ์ฝœ๋ฐฑํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋‹ค์Œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ ์‹œ๊ฐ„ ๋™์•ˆ์€ ๋Œ€๊ธฐํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค. setTimeout() ์œผ๋กœ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ž‘์—…์„ ์ง€์—ฐ์‹œํ‚ค๋Š” ์˜ˆ์‹œ์ด๋‹ค. ์ด ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด 3์ดˆ ๋’ค์— '3์ดˆ ์ง€์—ฐ!'์ด๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ์ฐ๋Š”๋‹ค. setTimeout(function() { console.log('3์ดˆ ์ง€์—ฐ!'); }, 3000); ์ง€๊ธˆ์€ 3์ดˆ์งœ๋ฆฌ ์ฝ”๋“œ์ด์ง€๋งŒ, ์„œ๋ฒ„์—์„œ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๋“ฑ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋Š” ๋” ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ฒŒ ๋œ๋‹ค.. 2022. 4. 20.
Promise ํŒจํ„ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋™์ž‘ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๊ฑฐ๋ฉด ๊ธฐ๋ณธ์ ์ธ ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•ด์„œ๋Š” ์•Œ์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์š”์•ฝํ•˜๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์ด๊ณ  ์ฝœ๋ฐฑ ํ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„ V8 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์—ญํ• ์„ ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ํ•„์š”ํ•˜๋‹ค. ๋Œ€์ค‘์ ์œผ๋กœ ์•Œ๋ ค์ง„ ์—”์ง„์€ ๊ตฌ๊ธ€์˜ V8 ์—”์ง„์œผ๋กœ ํฌ๋กฌ ์›น ๋ธŒ๋ผ์šฐ์ €, Node.js ๋“ฑ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. V8 ์—”์ง„์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋‹จํžˆ ๋‚˜ํƒ€๋‚ด๋ฉด ์ด๋ ‡๋‹ค. Memory Heap ๊ณผ Call Stack ์ด ์ฃผ์š” ๊ตฌ์„ฑ์š”์†Œ์ด๋‹ค. Memory Heap: ๋ณ€์ˆ˜์™€ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ผ์–ด๋‚˜๋Š” ๊ณณ Call Stack: ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์ˆœ์„œ๋Œ€๋กœ ์Œ“์ด๋Š” ๊ณณ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๊ธฐ.. 2022. 4. 14.
javascript ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชฉ์ฐจ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ• ๊ณ ์ฐจ ํ•จ์ˆ˜ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ํด๋กœ์ €(Closure) ์ปค๋ง(Currying) ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์‚ฐํ•  ๋Œ€์ƒ์ด ํ•จ์ˆ˜๊ฐ€ ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ์™€ ์ƒํƒœ๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์„ ์–ธ์  ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋˜๋ฉฐ ํ๋ฆ„ ์ œ์–ด๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๊ธฐ์ˆ ํ•˜์ง€ ์•Š๊ณ  ๋กœ์ง์„ ํ‘œํ˜„ํ•œ๋‹ค. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠน์ง• ๐Ÿ’ก ๋ช…๋ นํ˜•์ด ์•„๋‹Œ ์„ ์–ธํ˜•์ด๋‹ค. ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ฌด์—‡์„ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€์— ์ง‘์ค‘ํ•œ๋‹ค. ex) html, Lisp, Sql ๋“ฑ // ๋ฐฐ์—ด ๋‚ด ์š”์†Œ๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ฐ”๊พธ๋Š” ์ฝ”๋“œ // ๋ฐฐ์—ด ๋‚ด ์š”์†Œ๋ฅผ i๋ฅผ ์ฆ๊ฐ€ํ•ด์ฃผ๋ฉฐ ํ•˜๋‚˜์”ฉ ์ ‘๊ทผํ•˜์—ฌ ๋Œ€๋ฌธ์ž๋กœ ๋ฐ”๊พธ๊ณ  ์ƒˆ ๋ฐฐ์—ด์— ๋‹ด์•„์ค€๋‹ค. const arr = ['a', 'b', 'c']; const result = n.. 2022. 2. 6.