JS 6

[JavaScript] hasOwnProperty ๊ฐ์ฒด ์†์„ฑ ํ™•์ธํ•˜๊ธฐ

๐Ÿ“‚ ๋ชฉ์ฐจ hasOwnProperty๋ž€?์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ๊ฐ์ฒด(Object)๋Š” ์ƒ์œ„ ๊ฐ์ฒด์ธ object๋กœ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ(๊ธฐ๋Šฅ)๋ฅผ ๋ฌผ๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ hasOwnProperty()์ž…๋‹ˆ๋‹ค. const user = { name: "Hyonie",};console.log(user.hasOwnProperty("name")); // trueconsole.log(user.hasOwnProperty("toString")); // false๐Ÿ‘‰ ์ด ๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น ์†์„ฑ์ด ์ง์ ‘ ์ •์˜๋œ ๊ฒƒ์ธ์ง€ ํ™•์ธํ•ด์ค๋‹ˆ๋‹ค.(์ƒ์†๋œ ์†์„ฑ์€ false๋กœ ํŒ๋‹จ) โ— ๋ฌธ์ œ๋Š” ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.const params = { hasOwnProperty: () => false, id: 123,};console.log(params..

JS 2025.04.03

[JavaScript] ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ ํ‘œํ˜„์‹(IIFE) ์ด๋ž€?

JavaScript๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด ๊ฐ€๋” ์ด๋Ÿฐ ์ƒ์†Œํ•œ ๋ฌธ๋ฒ•์„ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:(() => { // ๋ญ”๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ})(); ์ฒ˜์Œ ๋ณด๋ฉด ์ด๊ฒŒ ๋„๋Œ€์ฒด ๋ญ์ง€.....? ์‹ถ์€๋ฐ์š”, ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ ํ‘œํ˜„์‹ ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค.์ด๋ฒˆ๊ธ€์—์„œ๋Š” IIFE๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์™œ ์“ฐ๋Š”์ง€, ์–ธ์ œ ์œ ์šฉํ•œ์ง€ ์ •๋ฆฌํ•ด๋ณด๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ“‚ ๋ชฉ์ฐจ ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์ด๋ž€?์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ ํ‘œํ˜„์‹(IIFE)์€ ์ •์˜ํ•˜์ž๋งˆ์ž ๋ฐ”๋กœ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. โœ… ๋ฌธ๋ฒ• ํ˜•ํƒœ(fucntion() { console.log("์ฆ‰์‹œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค!");})(); ๋˜๋Š” ํ™”์‚ดํ‘œํ•จ์ˆ˜ ๋ฒ„์ „์œผ๋กœ๋„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:(() => { console.log("์ด๊ฒƒ๋„ ์ฆ‰์‹œ ์‹คํ–‰!");})();  ๐Ÿ” ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ?ํ•œ๋ฒˆ ๋งŒ ์‹คํ–‰๋˜๋Š” ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋–„์ „์—ญ..

JS 2025.04.02

[JavaScript] new Set()๊ณผ has() ์ค‘๋ณต์—†๋Š” ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ๋ฐฐ์—ด๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ถˆํŽธํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.์ด๋Ÿด๋•Œ Set ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Set์˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•๊ณผ has()๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ“‚ ๋ชฉ์ฐจ ๐Ÿงฉ new Set() ์ด๋ž€?Set์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.const mySet = new Set([1,2,3,3,4]);console.log(mySet); //Set(4) {1,2,3,4}์œ„ ์˜ˆ์‹œ์ฒ˜๋Ÿผ, ์ค‘๋ณต๋œ ๊ฐ’ 3์€ ํ•˜๋‚˜๋งŒ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•const setName = new Set(iterable); // ๋ฐ˜๋ณตํ• ์ˆ˜ ์žˆ๋Š” ๊ฐ’(string, Array, Set, Map) ์˜ˆ์‹œ:const usi..

JS 2025.04.02

[JS] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ ๋น„๊ต ๋ฐ ํ™œ์šฉ - findIndex, includes

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐฐ์—ด์„ ๋‹ค๋ฃฐ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” findIndex()์™€ includes() ์ด๋‘˜์€ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ์—„์—ฐํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด ๋‘ ๋ฉ”์„œ๋“œ์˜ ๋™์ž‘์›๋ฆฌ์™€ ํ•จ๊ป˜ ์ฐจ์ด์ ์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ“‚ ๋ชฉ์ฐจ  โ“ findIndex vs includes ์ฐจ์ด์ ์€?๊ตฌ๋ถ„findIndex()includes()๋ชฉ์ ์กฐ๊ฑด์— ๋งž๋Š” ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜๋ฐฐ์—ด์ด๋‚˜ ๋ฌธ์ž์—ด์— ํ•ด๋‹น ๊ฐ’์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜๋ฐ˜ํ™˜๊ฐ’์ธ๋ฑ์Šค(0, 1, 2, ...) ๋˜๋Š” -1true ๋˜๋Š” false์‚ฌ์šฉ๋Œ€์ƒ๋ฐฐ์—ด๋ฐฐ์—ด ๋˜๋Š” ๋ฌธ์ž์—ด์ฝœ๋ฐฑ์‚ฌ์šฉโœ… ๊ฐ€๋ŠฅโŒ ๋ถˆ๊ฐ€๋Šฅ(๊ฐ’๋งŒ์ฒดํฌ) ๐Ÿ’ก findIndex๋ž€?findIndex๋Š” ์กฐ๊ฑด์— ๋งž๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๊ฐ€ ์—†๋‹ค๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์กฐ๊ฑด์ด ์ฐธ(t..

JS 2025.03.27

[JS] ํด๋กœ์ €(Closures)์™€ ๋ฆฌ์•กํŠธ์˜ ํ›…(useState)์˜ ๊ด€๊ณ„

ํด๋กœ์ €๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์œผ๋กœ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๋น„๊ณต๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด ๋ฐ์ดํ„ฐ ์€๋‹‰์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋น„๋™๊ธฐ ์ž‘์—…์ด๋‚˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ ์ƒํƒœ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์œ ์ง€ํ•˜๋ฉฐ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ํด๋กœ์ €์˜ ์žฅ์  ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ํ™œ์šฉํ•ด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ถ”๊ฐ€๋กœ, React์˜ ์ƒํƒœ๊ด€๋ฆฌ useState์™€ ํด๋กœ์ €์˜ ๊ด€๊ณ„์— ๋Œ€ํ•ด์„œ๋„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๐Ÿ“‚ ๋ชฉ์ฐจ 1. ํด๋กœ์ €๋ž€ ๋ฌด์—‡์ผ๊นŒโ“ํด๋กœ์ €๋Š” ๋‚ด๋ถ€ ํ•จ์ˆ˜๊ฐ€ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜(๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ)์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ ์ดํ›„์—๋„ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ์ƒํƒœ(๋ณ€์ˆ˜)๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ํด๋กœ์ €๋Š” ์™ธ๋ถ€ ๋ณ€์ˆ˜ ๊ฐ’ ์ƒํƒœ๋ฅผ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ดํ›„์—๋„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.์ด ์ƒํƒœ๋Š” ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ณ , ๋‚ด๋ถ€ ํ•จ์ˆ˜๋กœ๋งŒ ์ ‘๊ทผ..

JS 2025.01.19

[JS] Math.random()๊ณผ Object.Keys()๋กœ ์ ์‹ฌ๋ฉ”๋‰ด ๋žœ๋ค ์„ ํƒํ•˜๊ธฐ

๋ฌด์ž‘์œ„๋กœ ์ ์‹ฌ ๋ฉ”๋‰ด๋ฅผ ์ถ”์ฒœํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”? Math.random() ํ•จ์ˆ˜์™€ Object.keys() ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ ์‹ฌ ๋ฉ”๋‰ด ์ค‘ ํ•˜๋‚˜๋ฅผ ๋žœ๋คํ•˜๊ฒŒ ์„ ํƒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.  ๊ฐ์ฒด๋ฅผ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๋žœ๋ค ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋จผ์ €, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ‚ค๋Š” ์Œ์‹์œ ํ˜•์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๊ฐ ๊ฐ’์€ ํ•ด๋‹น์Œ์‹์˜ ์ด๋ฆ„๊ณผ ์ด๋ฏธ์ง€URL ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.const lunchChoice = { hansik: {name: "๋น„๋น”๋ฐฅ", image: "https://kormedi.com/wp-content/uploads/2024/09/gettyimages-a11354394.jpg"}, chineseFood: {name: "์งœ์žฅ๋ฉด", image: "https://cdn.ko..

JS 2024.12.22