[Javascript] ์ •๊ทœํ‘œํ˜„์‹
ยท
๐Ÿ”ฅ Develop/Javascript
์ •๊ทœํ‘œํ˜„์‹(Regular Expression, ์ค„์—ฌ์„œ RegEx)์€ ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ํŒจํ„ด์„ ์ฐพ๊ฑฐ๋‚˜ ๋งค์นญํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ๋ฌธ์ž์—ด ํŒŒ์‹ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์— ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๊ทœํ‘œํ˜„์‹์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.// ๋ฆฌํ„ฐ๋Ÿด ํ‘œ๊ธฐ๋ฒ•const regex = /pattern/;// RegExp ๊ฐ์ฒด ์ƒ์„ฑ์žconst regex = new RegExp("pattern"); ๊ธฐ๋ณธ ๋ฌธ๋ฒ•๋ฆฌํ„ฐ๋Ÿด ๋ฌธ์ž์ผ๋ฐ˜ ํ…์ŠคํŠธ ๋ฌธ์ž๋กœ, ๊ทธ๋Œ€๋กœ ๋งค์นญ๋ฉ๋‹ˆ๋‹ค.const regex = /Yundogi/;regex.test("Yundogi Dev"); // true ๋ฉ”ํƒ€ ๋ฌธ์žํŠน๋ณ„ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ๋ฌธ์ž๋“ค์ž…๋‹ˆ๋‹ค.. : ์ž„์˜์˜ ํ•œ ๋ฌธ์ž^ : ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘$ : ๋ฌธ์ž์—ด์˜ ๋** ..
[Javascript] ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด ์ •๋ ฌํ•˜๊ธฐ
ยท
๐Ÿ”ฅ Develop/Javascript
๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ๋ฐ์ดํ„ฐ ์ •๋ ฌ์€ ํ”ผํ•  ์ˆ˜ ์—†๋Š” ์ผ์ƒ์ด ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋‚˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ๋ง‰๋ก ํ•˜๊ณ  ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ์ •๋ฆฌํ•˜๋Š” ์ž‘์—…์€ ์‹ฌ์‹ฌ์ฐฎ๊ฒŒ ๋งˆ์ฃผ์น˜๊ฒŒ ๋˜์ฃ . ์˜ค๋Š˜์€ ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์จ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์ •๋ ฌ ๊ธฐ๋ฒ•๋“ค์„ ํ•จ๊ป˜ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์ •๋ ฌํ•˜๊ธฐ1. ๊ธฐ๋ณธ ์ •๋ ฌ (sort ๋ฉ”์„œ๋“œ)๋ฐฐ์—ด์˜ sort() ๋ฉ”์„œ๋“œ๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ •๋ ฌ ๋ฐฉ๋ฒ•์œผ๋กœ, ์ •๋ ฌ ์ˆœ์„œ๋Š” ๋ฌธ์ž์—ด์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.const fruits = ['banana', 'apple', 'orange', 'grape'];fruits.sort();console.log(fruits); // ['apple', 'banana', 'grape', 'orange']โš ๏ธ  sort() ๋ฉ”์„œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ(๋น„๊ต ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ) ..
[Javascript] Object.entries() ๋ฉ”์„œ๋“œ
ยท
๐Ÿ”ฅ Develop/Javascript
entries() ๋ฉ”์„œ๋“œ๋ž€?entries() ๋ฉ”์„œ๋“œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ์ฒด๋‚˜ ์ปฌ๋ ‰์…˜์˜ key-value ์Œ์„ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์œ ์šฉํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ๋‚ด์šฉ์„ ์‰ฝ๊ฒŒ ์ˆœํšŒํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด ๋ฉ”์„œ๋“œ ์‚ผํ˜•์ œObject.entries() : ๊ฐ์ฒด์˜ ํ‚ค์™€ ๊ฐ’์„ ์Œ์œผ๋กœ ๋ฌถ์–ด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.Object.keys(): ๊ฐ์ฒด์˜ ํ‚ค๋งŒ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.Object.values(): ๊ฐ์ฒด์˜ ๊ฐ’๋งŒ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.const obj = { a: 1, b: 2, c: 3 };console.log(Object.keys(obj)); // ['a', 'b', 'c']console.log(Object.values(obj)); // [1, 2, 3]console.log(Object.entri..
[Javascript] ์Šคํ”„๋ ˆ๋“œ(Spread) ์—ฐ์‚ฐ์ž
ยท
๐Ÿ”ฅ Develop/Javascript
์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋ž€?์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž(Spread Operator)๋Š” ES6์—์„œ ๋„์ž…๋œ ๊ธฐ๋Šฅ์œผ๋กœ, ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ํŽผ์น˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ฐ์‚ฐ์ž๋Š” ์„ธ ๊ฐœ์˜ ์ ( ... )์œผ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ์šฉ๋„1. ๋ฐฐ์—ด ๋ณต์‚ฌ ๋ฐ ๋ณ‘ํ•ฉconst arr1 = [1, 2, 3];const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]const combined = [...arr1, ...arr2]; // [1, 2, 3, 1, 2, 3, 4, 5]2. ๊ฐ์ฒด ๋ณต์‚ฌ ๋ฐ ๋ณ‘ํ•ฉconst obj1 = { foo: 'bar', x: 42 };const obj2 = { foo: 'baz', y: 13 };const clonedObj = { ...obj1 }; /..
[Javascript] ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ฐฉ์‹
ยท
๐Ÿ”ฅ Develop/Javascript
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๋•Œ๋•Œ๋กœ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋™์ž‘์— ๋‹นํ™ฉํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์˜ ๋Œ€๋ถ€๋ถ„์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ฐฉ์‹์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ด์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ด ์ฃผ์ œ์— ๋Œ€ํ•ด ํ•จ๊ป˜ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: 1. ์›์‹œ ํƒ€์ž…(Primitive Type)Number(์ˆซ์ž)String(๋ฌธ์ž์—ด)Boolean(๋ถˆ๋ฆฌ์–ธ)nullundefinedSymbol (ES6์—์„œ ์ถ”๊ฐ€)BigInt (ES11์—์„œ ์ถ”๊ฐ€)2. ์ฐธ์กฐ ํƒ€์ž…(Reference Type)Object(๊ฐ์ฒด)Function(ํ•จ์ˆ˜)Array(๋ฐฐ์—ด) - ์‚ฌ์‹ค ์ด๊ฒƒ๋„ ๊ฐ์ฒด์˜ ํ•œ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค!์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐฐ์—ด(Array)์€ ์‚ฌ์‹ค ํŠน๋ณ„ํ•œ ์ข…๋ฅ˜์˜ ๊ฐ์ฒด์ž…๋‹ˆ..
[Javascript] ํด๋กœ์ €(Closure)
ยท
๐Ÿ”ฅ Develop/Javascript
ํ•จ์ˆ˜์™€ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋์„ ๋•Œ์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ(Lexical Scope)๊ณผ์˜ ์กฐํ•ฉ๊ฐœ๋…ํ•จ์ˆ˜๊ฐ€ ์ž์‹ ์ด ์„ ์–ธ๋œ ํ™˜๊ฒฝ์„ ๊ธฐ์–ตํ•˜์—ฌ ํ•จ์ˆ˜๊ฐ€ ํ™˜๊ฒฝ ๋ฐ–์—์„œ ์‹คํ–‰๋  ๋•Œ์—๋„ ํ•ด๋‹น ํ™˜๊ฒฝ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.์ฆ‰, ๋‚ด๋ถ€ ํ•จ์ˆ˜์—์„œ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.๋˜ํ•œ, ์ƒ๋ช… ์ฃผ๊ธฐ๊ฐ€ ๋๋‚œ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.function outerFunc() { // ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜ var name = "yundogi"; // ๋‚ด๋ถ€ ํ•จ์ˆ˜ var innerFunc = function () { // ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผ console.log(name); // "yundogi" }; return innerFunc;}var inner = outerFunc(); // outerFunc()..
[Javascript] ํ˜ธ์ด์ŠคํŒ…(Hoisting)
ยท
๐Ÿ”ฅ Develop/Javascript
๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜ ์„ ์–ธ์„ ์œ ํšจ ๋ฒ”์œ„(scope)์˜ ๋งจ ์œ„๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๋Š” JS์˜ ๊ธฐ๋ณธ(default) ๋™์ž‘ ๊ฐœ๋…JS์˜ ๋ชจ๋“  ์„ ์–ธ์— ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•œ๋‹ค = ๋ชจ๋“  ์„ ์–ธ์ด ์ฝ”๋“œ ์‹คํ–‰ ์ „์— ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ๋‹ค.๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์„ ์–ธ๋ฌธ๋ณด๋‹ค ์ฐธ์กฐ๋‚˜ ํ˜ธ์ถœ์ด ๋จผ์ € ๋‚˜์™€๋„ ์˜ค๋ฅ˜ ์—†์ด ์‹คํ–‰๋œ๋‹ค.let, const, class๊ฐ€ ํ˜ธ์ด์ŠคํŒ…๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ์ด์œ ๋Š” ์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€(TDZ)์— ๋“ค์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ… (Variable Hoisting)๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์€ ์„ ์–ธ ๋ฐฉ์‹์— ๋”ฐ๋ผ ํฌ๊ฒŒ 2๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค. 1. var๋กœ ์„ ์–ธ: ๊ฐ’์ด undefined๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค.console.log(color); // undefinedvar color = yellow;console.log(color); // "yellow"..
์œค๋„๊ธฐ
'๐Ÿ”ฅ Develop/Javascript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก