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

๐Ÿ“š FrontEnd -Study/JavaScript30

IntersectionObserver ๊ฐœ๋… ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ์—ฌ๋Ÿฌ ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ์ฐพ์•„๋ณผ ๊ธฐํšŒ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ต‰์žฅํžˆ ๋ฉ‹์žˆ๋Š” ์ž‘ํ’ˆ๋“ค์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ์ค‘์—์„œ๋„ ์Šคํฌ๋กค์„ ๋‚ด๋ฆฌ๋ฉด์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜๋“ค์ด ๋™์ž‘ํ•˜๋Š” ํฌํŠธํด๋ฆฌ์˜ค๋“ค์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด๊ฒƒ๋“ค์ด ์ •์ ์ผ ์ˆ˜ ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ์ง€๋ฃจํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ณด๊ธฐ์—๋„ ์ƒ๋‹นํžˆ ๋ฉ‹์žˆ๋”๊ตฐ์š”.. ์ฒ˜์Œ์—” framer motion์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ณ„ํš์ด์—ˆ์ง€๋งŒ Intersection Observer => ์š” ๋…€์„์„ ์ถ”ํ›„์— ์‚ฌ์šฉํ•  ๊ณ„ํš์ด ๋งŽ์„ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•˜๊ณ  ์ •ํ™•ํ•œ ๊ฐœ๋…์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ์ƒ๊ฐ์ด ๋“ค์–ด ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ ๊ณ„๊ธฐ๋กœ ํ›‘์–ด๋ณผ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. Intersection Observer mdn์—์„œ ์„ค๋ช…๋˜์–ด์žˆ๋Š” ๊ธ€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ต์ฐจ์  ๊ด€์ฐฐ์ž API์˜ IntersectionObserver ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋Œ€์ƒ ์š”์†Œ์™€ ์ƒ์œ„ ์š”์†Œ ๋˜๋Š”.. 2024. 1. 24.
๋น„๋™๊ธฐ - Promise , async/await Promise ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋Œ€ํ‘œ์ ์ธ ๋น„๋™๊ธฐ ๋กœ์ง์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด์ด๋‹ค. Promise๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋น„๋™๊ธฐ ์ž‘์—…๋“ค์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. Promise๋Š” ์ฃผ๋กœ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ• const promise = new Promise((resolve, reject) => { //๋น„๋™๊ธฐ ์ž‘์—… }); resove์™€ reject๋Š” ํ•จ์ˆ˜ ๋‚ด์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜์ด๋‹ค. resolve ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด => ๋น„๋™๊ธฐ ์„ฑ๊ณต! reject ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด => ๋น„๋™๊ธฐ ์‹คํŒจ! Promise๋Š” new Promise(...) ํ•˜๋Š” ์ˆœ๊ฐ„ ์ด๊ณณ์— ํ• ๋‹น๋œ ๋น„๋™๊ธฐ ์ž‘์—…์€ ๋ฐ”๋กœ ์‹œ์ž‘๋œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ํ•จ์ˆ˜๋Š” ์ •์˜ํ•˜๋Š” ์‹œ์ ๊ณผ ํ˜ธ์ถœํ•˜๋Š” ์‹œ์ ์ด ๋‹ค๋ฅด์ง€๋งŒ new Promise๋Š” ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ .. 2023. 4. 25.
[JS/ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ] 1. ํ”„๋กœํ† ํƒ€์ž…์˜ constructor ํ”„๋Ÿฌํผํ‹ฐ์™€ ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๋ชจ๋“  ํ”„๋กœํ† ํƒ€์ž…์€ constructor ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. //์ƒ์„ฑ์ž ํ•จ์ˆ˜ function Person(name){ this.name = name; } const me = new Person('Lee') console.log(me.constructor === Person); // true ์œ„์˜ ์ฝ”๋“œ์—์„œ me๋Š” ์ž์‹ ์ด ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ด ์—ฐ๊ฒฐ์€ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ, ์ฆ‰ ํ•จ์ˆ˜ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ด๋ค„์ง„๋‹ค. ์—ฌ๊ธฐ์„œ Person ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” me ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ์ด๋•Œ me๊ฐ์ฒด๋Š” ํ”„๋กœํ† ํƒ€์ž…์˜ constructor ํ”„๋กœํผํƒ€์ž…์„ ํ†ตํ•ด ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ์—ฐ๊ฒฐ๋œ๋‹ค. me ๊ฐ์ฒด์—๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ์—†์ง€๋งŒ ํ”„๋กœํผํƒ€์ž…์ธ Person.proto.. 2023. 3. 16.
TIL - [JS/ํ”„๋กœํ† ํƒ€์ž…๊ณผ ํด๋ž˜์Šค] Object prototypes ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด(ํ”„๋กœํ† ํƒ€์ž…)๋ž€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ทผ๊ฐ„์„ ์ด๋ฃจ๋Š” ๊ฐ์ฒด ๊ฐ„ ์ƒ์†(inheritance)์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ํ”„๋กœํ† ํƒ€์ž…์€ ์–ด๋–ค ๊ฐ์ฒด์˜ ์ƒ์œ„(๋ถ€๋ชจ) ๊ฐ์ฒด์˜ ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด๋กœ์„œ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ๊ณต์œ  ํ”„๋กœํผํ‹ฐ(๋ฉ”์„œ๋“œ ํฌํ•จ)๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ํ”„๋กœํ† ํƒ€์ž…์„ ์ƒ์†๋ฐ›์€ ํ•˜์œ„(์ž์‹)๊ฐ์ฒด๋Š” ์ƒ์œ„ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ž์‹ ์˜ ํ”„๋กœํผํ‹ฐ์ฒ˜๋Ÿผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ๊ฐ์ฒด๋Š” [[Prototype]]์ด๋ผ๋Š” ๋‚ด๋ถ€ ์Šฌ๋กฏ์„ ๊ฐ€์ง€๋ฉฐ, ์ด ๋‚ด๋ถ€ ์Šฌ๋กฏ ๊ฐ’์€ ํ”„๋กœํ† ํƒ€์ž…์˜ ์ฐธ์กฐ๋‹ค. ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ ๋•Œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ์‹์— ๋”ฐ๋ผ ํ”„๋กœํ† ํƒ€์ž…์ด ๊ฒฐ์ •๋˜๊ณ  [[Prototype]]์— ์ €์žฅ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด์˜ ํ”„๋กœํ† ํƒ€์ž…์€ Object.prototype์ด๊ณ  ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด.. 2023. 3. 15.
TIL - [JS/๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ „ํ†ต์ ์ธ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ ˆ์ฐจ์ง€ํ–ฅ์  ๊ด€์ ์—์„œ ๋ฒ—์–ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ๋‹จ์œ„, ์ฆ‰ ๊ฐ์ฒด(object)์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ํ‘œํ˜„ํ•˜๋ ค๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๋งํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ, ๋ณ„๊ฐœ์˜ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด, ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ๊ณผ, ๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •์— ๋Œ€ํ•œ ๋ชจํ˜•์„ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๋ฐฉ์‹์„ ๊ณ ์•ˆํ•ด๋ƒˆ๋‹ค. ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์ด ๋ณ„๊ฐœ๋กœ ์ทจ๊ธ‰๋˜์ง€ ์•Š๊ณ , ํ•œ ๋ฒˆ์— ๋ฌถ์—ฌ์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. => ๊ฐ์ฒด(Object) ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ(OOP)๋Š” ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„ ์ฒ ํ•™์ด๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ์ฒด๋กœ ๊ทธ๋ฃนํ™” ๋˜์–ด์žˆ๊ณ , OOP์˜ ์บก์Аํ™”, ์ถ”์ƒํ™”, ์ƒ์†, ๋‹คํ–ฅ์„ฑ ์˜ ์ฃผ์š”๊ฐœ๋…์„ ํ†ตํ•ด ์žฌ์‚ฌ์šฉ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. (๊ฐ์ฒด๋Š” ํ•œ๋ฒˆ ๋งŒ๋“ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์ƒ์—์„œ ๋ฐ˜ํ™˜๋˜๊ฒŒ ์ „๊นŒ์ง€ ์œ ์ง€.. 2023. 3. 15.
TIL - [JS/ํด๋ž˜์Šค,์ธ์Šคํ„ด์Šค] 1. ํด๋ž˜์Šค, ์ธ์Šคํ„ด์Šค, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ class๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ์ ์ธ ํ‹€์„ ์„ธํŒ…ํ•œ๋‹ค. ์ด๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“  ๊ฒƒ์€ ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด ์ค„์—ฌ์„œ ์ธ์Šคํ„ด์Šค(instance)๋ผ ๋ถ€๋ฅธ๋‹ค. ์ธ์Šคํ„ด์Šค๋Š” new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. class Car(){} //ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•  ๋•Œ ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•œ๋‹ค. let mini = new Car(); class ๋ผ๋Š” ๋ฌธ๋ฒ•์€ ES6๋ถ€ํ„ฐ ๋“ฑ์žฅํ•˜์˜€๊ณ  ์ด์ „์—๋Š” ํ•จ์ˆ˜๋กœ ์ •์˜ํ–ˆ๋‹ค. //ES5 function Car (brand, name, color){ //์ธ์Šคํ„ด์Šค ๋งŒ๋“ค์–ด์งˆ ๋•Œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ } //ES6 class Car(){ constructor(brand, name, color){} //์ธ์Šคํ„ด์Šค ๋งŒ๋“ค์–ด์งˆ ๋•Œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ } ์œ„์˜ ์ฝ”๋“œ์—์„œ ๋ณด.. 2023. 3. 15.
TIL - [JS/๋ธŒ๋ผ์šฐ์ €] DOM DOM์€ Document Object Model์˜ ์•ฝ์ž๋กœ HTML ๋ฌธ์„œ์˜ ๊ณ„์ธต์  ๊ตฌ์กฐ์™€ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋ฉฐ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” API, ์ฆ‰ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. โ“ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ - ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์ž์‹ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ๋…ธ๋“œ ๊ฐ„์˜ ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค. * ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ : ํ•˜๋‚˜์˜ ์ž๋ฃŒ ๋’ค์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž๋ฃŒ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ. ex) ํŠธ๋ฆฌ, ๊ทธ๋ž˜ํ”„ ๋…ธ๋“œ ๊ฐ์ฒด๋“ค๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ DOM์ด๋ผ ํ•œ๋‹ค. DOM๊ณผ JavaScript DOM์€ JavaScript ์–ธ์–ด์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ ๋Œ€์‹  ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” Web API์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ DOM์ด ์—†์œผ๋ฉด JavaScript ์–ธ์–ด์—๋Š” ์›น ํŽ˜์ด์ง€, HTML ๋ฌธ์„œ, SVG ๋ฌธ.. 2023. 3. 7.
TIL - [JavaScript Koans] Koans๋ž€? Koans๋Š” ํ…Œ์ŠคํŠธ ์ฃผ๋„ ํ•™์Šต(Test Driven Learning)์˜ ์ผ์ข…์œผ๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž์‹ ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ง€์‹์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š” ์—ฐ์Šต๋ฌธ์ œ์ด๋‹ค. ์ฃผ๋กœ ํ•™์Šต์ž๋Š” ์ฃผ์–ด์ง„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋กœ ์–ป๊ฒŒ ๋˜๋Š” ์‹คํŒจ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๊ณ  ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด ๋‚˜๊ฐ„๋‹ค. ์ด ๊ณผ์ •์—์„œ ํ•™์Šต์ž๋Š” ์–ธ์–ด์˜ ๋ฌธ๋ฒ•, ๊ธฐ๋Šฅ, ํŠน์ง• ๋“ฑ์— ๋Œ€ํ•ด ๋” ๊นŠ์ด ์ดํ•ดํ•˜๊ฒŒ ๋˜๋ฉฐ, ๋ณด๋‹ค ํšจ๊ณผ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿง ํ—ท๊ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„ ํด๋กœ์ €๋ผ๋Š” ๊ฐœ๋…์„ ๋ช‡์ผ ์ „์— ์ ‘ํ•˜๊ณ  ์™„๋ฒฝํžˆ ์ดํ•ดํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์–ด๋А์ •๋„ ๊ฐ์€ ์•Œ์•˜์—ˆ๋Š”๋ฐ, ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๋ณด๋‹ˆ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋‹ต๊ณผ ๋‹ฌ๋ž๋‹ค. ์—ญ์‹œ ๋ฌด์—‡์ด๋“  ์ •ํ™•ํ•˜๊ฒŒ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ๋˜๊ฒ ๊ตฌ๋‚˜ ๋ผ๋Š”๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ๐Ÿ˜… ์ผ๋‹จ ์ฒซ๋ฒˆ์งธ๋กœ ์˜๋ฌธ์ด ๋“ค์—ˆ๋˜ ๋ถ€๋ถ„์€ innerFn() ํ•จ์ˆ˜ ์•ˆ์— name = 'sug.. 2023. 3. 6.
TIL - [ํด๋กœ์ €] ์–ดํœ˜์  ํ™˜๊ฒฝ(Lexical Environment) ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด script๋‚ด์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋“ค์ด Lexical ํ™˜๊ฒฝ์— ์˜ฌ๋ผ๊ฐ„๋‹ค. (let์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋„ ํ˜ธ์ด์ŠคํŒ… ๋˜๊ณ , Lexicalํ™˜๊ฒฝ์— ์˜ฌ๋ผ ๊ฐ€์ง€๋งŒ ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์˜ฌ๋ผ๊ฐ. => ๊ทธ๋ž˜์„œ ์‚ฌ์šฉ์€ ๋ชปํ•œ๋‹ค. ๊ทธ์— ๋น„ํ•ด ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ ๋ณ€์ˆ˜์™€ ๋‹ฌ๋ฆฌ ๋ฐ”๋กœ ์ดˆ๊ธฐํ™” ๋œ๋‹ค. => Lexical ์œ„์น˜์—์„œ๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.) ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ดํŽด๋ณด๋ฉด ๋จผ์ € let one; ์•„์ง ํ• ๋‹น๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ๊ฐ’ undefined๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ด์ œ ์‚ฌ์šฉ์€ ํ•ด๋„ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค. one = 1; function addOne(num){ console.log(one + num); } // ํ•จ์ˆ˜ ์„ ์–ธ์€ ์ด๋ฏธ ์ดˆ๊ธฐ์— ์™„๋ฃŒ ๋˜์—ˆ๊ณ  addOne(5); //ํ•จ์ˆ˜๋ฅผ.. 2023. 3. 2.
TIL - [ํ•ต์‹ฌ ๊ฐœ๋…๊ณผ ์ฃผ์š” ๋ฌธ๋ฒ•] JavaScript์—์„œ ์ž๋ฃŒํ˜•(type)์ด๋ž€ ๊ฐ’(value)์˜ ์ข…๋ฅ˜์ด๋‹ค. ์ž๋ฃŒํ˜•์€ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์›์‹œ ์ž๋ฃŒํ˜• ( primitive type) ์ฐธ์กฐ ์ž๋ฃŒํ˜• ( reference type) ์œผ๋กœ ๋‚˜๋‰œ๋‹ค. // ์›์‹œ ์ž๋ฃŒํ˜•(primitive type): number, string, boolean, undefined, null 42, 'string', true, undefined, null ์›์‹œ ์ž๋ฃŒํ˜•์ด ์•„๋‹Œ ๋ชจ๋“  ์ž๋ฃŒํ˜•์€ ์ฐธ์กฐ ์ž๋ฃŒํ˜•์ด๋‹ค. ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด, ๊ฐ์ฒด๊ฐ€ ๋Œ€ํ‘œ์ ์ด๋‹ค. ํ•จ์ˆ˜๋„ ์ฐธ์กฐ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ถ„๋ฅ˜ํ•œ๋‹ค. // ์ฐธ์กฐ ์ž๋ฃŒํ˜•(reference type) [0, 1, 2] // ๋ฐฐ์—ด {name: 'kimcoding', age: 45} // ๊ฐ์ฒด function su.. 2023. 3. 2.
TIL - [JavaScript-๊ฐ์ฒด] ์˜ค๋Š˜์€ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ํ•™์Šตํ•˜๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค..! ๊ทธ๋ž˜๋„ ์ด๋•Œ๊นŒ์ง€ ๋ผ์–ด ๋งž์ถฐ์„œ๋ผ๋„ ํ’€์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์—๋Š” ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๋ฅผ ํ’€์ง€ ๋ชปํ•˜์˜€๋‹ค. ใ… ใ… ใ…  ๋‚ด๊ฐ€ ์“ด ์ฝ”๋“œ function countAllCharacters(str) { // TODO: ์—ฌ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. let result = {}; let array = str.split(''); for(let el in array){ Object.keys(result).includes(array[el])?result[array[el]]+=1:result[array[el]]=1; } return result; } ๋นˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  str์€ splitํ•˜์—ฌ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  result ๊ฐ์ฒด์— array[el]์˜ ํ‚ค๊ฐ€ ์žˆ์œผ๋ฉด result[array.. 2023. 2. 28.
TIL - [JS-๋ฐฐ์—ด] ์˜ค๋Š˜ ๋ฐฐ์—ด์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ  ๋ฐฐ์—ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋Š”๋ฐ ํ—ท๊ฐˆ๋ ธ๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ–ˆ๋˜ ๊ฒƒ ์œ„์ฃผ๋กœ ์˜ฌ๋ ค๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์‚ฌ์‹ค ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ์—์„œ ๋ง‰ํ˜€๋ฒ„๋ ธ๋‹ค. Array.isArray() ์ด๊ฒƒ์„ ๋ชฐ๋ž๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์œ„์˜ ๋ฉ”์„œ๋“œ๋Š” ์ธ์ž๊ฐ€ ๋ฐฐ์—ด์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋ณ„ํ•œ๋‹ค. function getType(anything) { if (Array.isArray(anything)) { return 'array'; } else if (anything === null) { return 'null'; } else { return typeof anything; } } ์ด๊ฑด ์‚ฌ์‹ค ๋ณด์ž๋งˆ์ž sort๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ํ•˜์—ฌ์„œ ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’์„ return ํ•˜๋ฉด ๋˜๊ฒ ๋‹ค ์‹ถ์—ˆ๋Š”๋ฐ ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ sort ํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ตฌ๊ธ€๋ง์„ ํ•˜์˜€๋‹ค. arr.sort((a,b.. 2023. 2. 27.
TIL - [๊ฐ„๋‹จํ•œ ์›น์•ฑ ๋งŒ๋“ค๊ธฐ] ์˜ค๋Š˜์€ ๋“œ๋””์–ด ๊ณ„์‚ฐ๊ธฐ ์ž‘๋™์„ ์‹œํ‚ค๊ธฐ ์œ„ํ•ด javaScript๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๋Š” ๋‚ ์ด๋‹ค!! ๊ธฐ๋ณธ ๋‹จ๊ณ„์ธ bare minimum test, ๊ทธ ๋‹ค์Œ ๋‹จ๊ณ„์ธ Advanced Challenge test, ๋งˆ์ง€๋ง‰ ์ตœ์ข… ๋‹จ๊ณ„์ธ Nightmate test๊ฐ€ ์žˆ๋Š”๋ฐ ๋ฌผ๋ก  ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๊นŒ์ง€ ํ†ต๊ณผํ•  ๊ฐ์˜ค๋กœ ์ž„ํ–ˆ๋‹ค. ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์–ด๋ ต๊ฒŒ ์–ด๋ ต๊ฒŒ ๋ชจ๋‘ ํ†ต๊ณผ๊ฐ€ ๋˜๊ธด ํ–ˆ์ง€๋งŒ ์Šคํ‚ฌ์ด ๋ถ€์กฑํ•ด์„œ ๊ทธ๋Ÿฐ๊ฐ€ ์กฐ๊ธˆ ์ง€์ €๋ถ„ํ•œ ๋А๋‚Œ์ด๋ž„๊นŒ..? ํฐ ํ‹€์„ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ์„ธ์„ธํ•œ ๊ฒƒ์„ ๋ฏธ์…˜ ๊นจ๋“ฏ์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ๋‚˜์ค‘์— ํฌ๊ฒŒ ๋ดค์„ ๋•Œ ๋‹ค๋ฅธ ๊ฒƒ๊ณผ๋„ ์—ฐ๊ด€์ด ๋  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ ์–ต์ง€๋กœ ์—ฐ๊ด€์ง€์œผ๋ ค๋Š” ๋ถ€๋ถ„๋„ ์ƒ๊ธฐ๊ณ ... ๋ฐ˜๋ฉด์— ๊ฐ•์‚ฌ๋‹˜๊ป˜์„œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ๋˜๊ฒŒ ๊ฐ„๋‹จํ•˜๊ณ  ๊น”๋”ํ•œ ๋А๋‚Œ์ด์—ˆ๋‹ค. 1. ์ˆซ์ž ๋ฒ„ํŠผ ํด๋ฆญ ๋‚ด๊ฐ€ ์“ด ์ฝ”๋“œ if (action === 'number').. 2023. 2. 23.
์ˆซ์ž์•ผ๊ตฌ ๊ฒŒ์ž„ ์ œ๋กœ์ดˆ๋‹˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ฒŒ์ž„๋งŒ๋“œ๋Š” ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ์‹ค์Šต์„ ํ•ด์˜ค๋‹ค๊ฐ€ ์ง€๋ขฐ์ฐพ๊ธฐ ๊ฒŒ์ž„ ๋ถ€๋ถ„๋ถ€ํ„ฐ๋Š” ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ์–ด๋ ค์›Œ์„œ ์ž ์‹œ ๊ทธ ์ „์— ํ–ˆ๋˜ ๊ฒŒ์ž„๋“ค์„ ํ˜ผ์ž ํž˜์œผ๋กœ ์ฝ”๋”ฉ์„ ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง€๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ๋“ฃ๋‹ค๋ณด๋ฉด ์žฌ์ƒ์„ ์ž ์‹œ ๋ฉˆ์ถฐ๋‘์—ˆ๋‹ค๊ฐ€ ํ˜ผ์ž ์ฝ”๋”ฉ ํ•ด๋ณด๋ ค๊ณ  ํ•ด๋„ ์•ž์— ์˜์ƒ์ด ์žˆ๊ณ  ๋ช‡ ์ดˆ๋งŒ ๋„˜๊ธฐ๋ฉด ์ฝ”๋“œ๋ฅผ ๋ณด๊ฒŒ ๋˜๋‹ค๋ณด๋‹ˆ ์™„์ „ํ•œ ๋‚ด๊ฒƒ์ด ์•„๋‹Œ ๋А๋‚Œ์ด ๋“ค๊ธด ํ–ˆ์—ˆ๋‹ค. ์›๋ž˜๋Š” ๊ณ„์‚ฐ๊ธฐ๋งŒ๋“œ๋Š” ๊ฒƒ ๋ถ€ํ„ฐ ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์ง€๊ธˆ ์ˆ˜๊ฐ•์ค‘์ธ ์ฝ”๋“œ์Šคํ…Œ์ด์ธ ์—์„œ ๊ณ„์‚ฐ๊ธฐ๋ฅผ ๋งŒ๋“ค ์˜ˆ์ •์ด๋ผ ์ˆซ์ž์•ผ๊ตฌ๋ถ€ํ„ฐ ์ฐจ๊ธˆ์ฐจ๊ธˆ ํ•ด๋ณด๋Š” ๊ฑธ๋กœ!! ๋จผ์ € ์ˆซ์ž์•ผ๊ตฌ ๊ฒŒ์ž„์˜ ๋ฃฐ์€ ์ปดํ“จํ„ฐ๊ฐ€ 1 - 9๊นŒ์ง€์˜ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์ˆซ์ž 4๊ฐœ๋ฅผ ๋ฝ‘๋Š”๋‹ค. ๊ฒŒ์ž„์„ ํ•˜๋Š” ์œ ์ €๋Š” ์ด 10๋ฒˆ์˜ ๊ธฐํšŒ๊ฐ€ ์žˆ๊ณ  ์ปดํ“จํ„ฐ๊ฐ€ ๋žœ๋ค์œผ๋กœ ๊ณ ๋ฅธ 4๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋งž์ถ”๋ฉด ๋œ๋‹ค. ์ด๋•Œ, ์ˆซ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ˆœ์„œ๊นŒ์ง€ ๋งž์ถฐ์•ผ ํ•œ.. 2023. 2. 22.
TIL - [JS ๊ธฐ๋ณธ๋ฌธ๋ฒ•] if๋ฌธ if๋ฌธ์€ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์‹์˜ ์ฐธ(true)/๊ฑฐ์ง“(false) ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์‹คํ–‰์ด ๊ฒฐ์ • ๋œ๋‹ค. ์กฐ๊ฑด์‹์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ถˆ๋ฆฐ ํƒ€์ž…์ด ๋˜๋„๋ก ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. ๋™์น˜์—ฐ์‚ฐ์ž (===) ๋™์น˜์—ฐ์‚ฐ์ž๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋™์ผํ•˜๋ฉด true, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. !==๋Š” ๋ฐ˜๋Œ€๋กœ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋™์ผํ•˜์ง€ ์•Š์œผ๋ฉด true, ๋™์ผํ•˜๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋น„๊ต์—ฐ์‚ฐ์ž(> , = , 2023. 2. 21.
728x90