πŸ“ƒ Front-End

πŸ“ƒ Front-End/JavaScript

JavaScript λ¬Έμžμ—΄ κ΄€λ ¨ 정리

λ¬Έμžμ—΄μ„ λ°°μ—΄ ν˜•νƒœλ‘œ λ³€ν™˜ ➑ .split() const word = 'apple' word.split('') // ['a','p','p','l','e'] λ°°μ—΄μ˜ μš”μ†Œλ₯Ό ν•˜λ‚˜μ˜ λ¬Έμžμ—΄λ‘œ λ³€ν™˜ ➑️ .join() λ§€κ°œλ³€μˆ˜ μžλ¦¬μ— κ΅¬λΆ„μžλ₯Ό 넣지 μ•ŠμœΌλ©΄, λ°°μ—΄μ˜ μš”μ†Œλ“€μ΄ μ‰Όν‘œλ‘œ κ΅¬λΆ„μ΄λ˜κ³ , κ΅¬λΆ„μžκ°€ 빈 λ¬Έμžμ—΄μ΄λ©΄ 곡백 없이 μ—°κ²° λ©λ‹ˆλ‹€. const animals = ['rabbit', 'gorilla' , 'lion', 'bear'] animals.join() // 'rabbit,gorilla,lion,bear' animals.join('') // 'rabbitgorillalionbear' animals.join(' ') // 'rabbit gorilla lion bear' animals.join(' & ')..

πŸ“ƒ Front-End/Next.js

Next.js - λ’€λ‘œκ°€κΈ° ν•  λ•Œ 이전 슀크둀 μœ„μΉ˜ μœ μ§€

_app.tsx const router = useRouter() useEffect(() => { window.history.scrollRestoration = 'auto' const cacheScrollPositions: Array = [] let shouldScrollRestore : null | {x: number; y: number} router.events.on('routeChangeStart', () => { cacheScrollPositions.push([window.scrollX, window.scrollY]) }) router.events.on('routeChangeComplete', () => { if (shouldScrollRestore) { const {x, y} = shouldScr..

πŸ“ƒ Front-End/JavaScript

replace μ‚¬μš©ν•΄μ„œ λ¬Έμžμ—΄ μΉ˜ν™˜(RegExp 객체 μ‚¬μš©)

μ•Œκ³ λ¦¬μ¦˜ 곡뢀 ν•˜λ˜ 쀑 μ •κ·œμ‹μ„ μ‚¬μš©ν•΄μ„œ λ¬Έμžμ—΄μ„ μΉ˜ν™˜ν•˜λŠ” 방법을 μƒˆλ‘œ μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μš°μ„  replace() λ©”μ„œλ“œλŠ” νŠΉμ • λ¬Έμžμ—΄μ„ μΉ˜ν™˜ ν•  λ•Œ μ‚¬μš© ν•©λ‹ˆλ‹€. βœ” ν•˜μ§€λ§Œ, λ¬Έμžμ—΄μ—μ„œ λ³€κ²½ν•˜λ €λŠ” λ¬Έμžκ°€ μ—¬λŸ¬ 번 반볡될 경우 첫 번째둜 λ°œκ²¬ν•œ λ¬Έμžμ—΄λ§Œ μΉ˜ν™˜ ν•©λ‹ˆλ‹€. μ‚¬μš©λ²• replace('찾을 λ¬Έμžμ—΄ or μ •κ·œμ‹', 'λ³€κ²½ν•˜λŠ” λ¬Έμžμ—΄') μ˜ˆμ‹œ let str = "사과, λ°°, μˆ˜λ°•"; let strChange = str.replace("λ°°", "μ˜€λ Œμ§€"); console.log(strChange); // 사과, μ˜€λ Œμ§€, μˆ˜λ°• μ •κ·œμ‹ ❓ βœ” 정해진 κ·œμΉ™μ„ μ‚¬μš©ν•΄ λͺ¨λ“  문자λ₯Ό λ³€ν™˜ν•  μˆ˜λ„ 있고 숫자,λ²ˆν˜Έλ‚˜ 맨 처음, 맨 λ’€λ§Œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œμ‹ μ˜΅μ…˜ μ˜΅μ…˜ g λͺ¨λ“  νŒ¨ν„΄ 체크(global) i λŒ€μ†Œλ¬Έμž..

πŸ“ƒ Front-End/JavaScript

λͺ¨λ“ˆν™”

λ‹€λ₯Έ νŒŒμΌμ— μžˆλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ κΈ°λŠ₯을 νŠΉμ • νŒŒμΌμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. Import & Export μž„ν¬νŠΈ(Import)와 읡슀포트(Export)λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μ½”λ“œλ₯Ό λͺ¨λ“ˆν™” ν•  수 μžˆλŠ” κΈ°λŠ₯ κΈ°λ³Έ 문법 export λ³€μˆ˜, ν•¨μˆ˜ λ‹€λ₯Έ νŒŒμΌμ—μ„œ κ°€μ Έλ‹€ μ“Έ λ³€μˆ˜λ‚˜ ν•¨μˆ˜μ˜ μ•žμ— export λΌλŠ” ν‚€μ›Œλ“œλ₯Ό λΆ™μž…λ‹ˆλ‹€. 읡슀포트된 νŒŒμΌμ€ μž„ν¬νŠΈλ‘œ λΆˆλŸ¬μ™€ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. import { 뢈러올 λ³€μˆ˜ λ˜λŠ” ν•¨μˆ˜ 이름 } from '파일 경둜'; 예제 math.js export let pi = 3.14; export function sum(a, b) { return a + b; } app.js import { pi } from './math.js'; console.log(pi); // 3.14 i..

πŸ“ƒ Front-End/JavaScript

λΈŒλΌμš°μ € 객체 λͺ¨λΈ(BOM, Browser Object Model)

μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•˜λ©΄ λΈŒλΌμš°μ €μ˜ 정보에 μ ‘κ·Όν•˜κ±°λ‚˜ λΈŒλΌμš°μ €μ˜ μ—¬λŸ¬ κΈ°λŠ₯듀을 μ œμ–΄ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” 객체 λͺ¨λΈμ΄ λ°”λ‘œ λΈŒλΌμš°μ € 객체 λͺ¨λΈ(BOM, Browser Object Model)μž…λ‹ˆλ‹€. BOM window Global Context(μ „μ—­ 곡간)이자 λΈŒλΌμš°μ € 창을 λ‚˜νƒ€λ‚΄λŠ” 객체 navigator λΈŒλΌμš°μ €μ™€ 운영체제 λŒ€ν•œ 정보 screen μ‚¬μš©μž ν™˜κ²½μ˜ λ””μŠ€ν”Œλ ˆμ΄(λͺ¨λ‹ˆν„°) 정보λ₯Ό κ°€μ§€λŠ” 객체 location ν˜„μž¬ URL 에 λŒ€ν•œ 정보, λΈŒλΌμš°μ €μ—μ„œ μ‚¬μš©μžκ°€ μš”μ²­ν•˜λŠ” URL history ν˜„μž¬ λΈŒλΌμš°μ €κ°€ μ ‘κ·Όν–ˆλ˜ URL history document ν˜„μž¬ λ¬Έμ„œμ— λŒ€ν•œ 정보 μ°Έκ³  http://www.tcpschool.com/javascript/js_bom_window https://..

πŸ“ƒ Front-End/JavaScript

λ¬Έμ„œ 객체 λͺ¨λΈ(DOM, Document Objects Model)

XMLμ΄λ‚˜ HTML λ¬Έμ„œμ— μ ‘κ·Όν•˜κΈ° μœ„ν•œ μΌμ’…μ˜ μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€. 이 객체 λͺ¨λΈμ€ λ¬Έμ„œ λ‚΄μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό μ •μ˜ν•˜κ³ , 각각의 μš”μ†Œμ— μ ‘κ·Όν•˜λŠ” 방법을 μ œκ³΅ν•©λ‹ˆλ‹€. 넓은 의미 μ›Ή λΈŒλΌμš°μ €κ°€ HTML νŽ˜μ΄μ§€λ₯Ό μΈμ‹ν•˜λŠ” 방식 쒁은 의미 Document 객체와 κ΄€λ ¨λœ 객체의 집합 DOM μ•ˆμ—λŠ” μš°λ¦¬κ°€ μ •μ˜ν•œ μš”μ†Œλ“€μ΄ Tree ν˜•νƒœλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이것을 μ΄μš©ν•˜μ—¬ JS둜 μ›ΉνŽ˜μ΄μ§€λ₯Ό μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. HTML의 , 그리고 의 μ•ˆμ— 각각의 tag 듀을 μš”μ†Œ(element)라고 λΆ€λ₯΄κ³ , JSμ—μ„œλŠ” λ¬Έμ„œ 객체라고 λΆ€λ¦…λ‹ˆλ‹€. DOM을 μ΄μš©ν•˜λ©΄ HTML νƒœκ·Έλ₯Ό μΆ”κ°€, μˆ˜μ •,μ‚­μ œ λ“± ν•  수 μžˆμŠ΅λ‹ˆλ‹€. DOM Tree 정리 λΈŒλΌμš°μ €κ°€ HTML νŒŒμΌμ„ 읽을 λ•Œ λΈŒλΌμš°μ €κ°€ 이해할 수 μžˆλŠ”, λ©”λͺ¨λ¦¬μ— 보관할 수 μžˆλŠ” objec..

πŸ“ƒ Front-End/JavaScript

==(동등 μ—°μ‚°μž)와 ===(일치 μ—°μ‚°μž)

λ™λ“±μ—°μ‚°μž(==)λŠ” ν”Όμ—°μ‚°μžλ“€μ˜ κ°’λ§Œ λΉ„κ΅ν•©λ‹ˆλ‹€. 즉, == μ—°μ‚°μžλŠ” νƒ€μž… λ³€ν™˜μ΄ ν•„μš”ν•œ 경우 νƒ€μž… λ³€ν™˜μ„ ν•œ 후에 λ™λ“±ν•˜μ§€ λΉ„κ΅ν•œλ‹€. μΌμΉ˜μ—°μ‚°μž(===)λŠ” ν”Όμ—°μ‚°μžλ“€μ˜ κ°’κ³Ό νƒ€μž…μ„ λͺ¨λ‘ λΉ„κ΅ν•©λ‹ˆλ‹€. 즉, === μ—°μ‚°μžλŠ” νƒ€μž… λ³€ν™˜μ„ ν•˜μ§€ μ•Šκ³  두 값이 같은 νƒ€μž…μ΄ μ•„λ‹Œ 경우 ===λŠ” falseλ₯Ό λ°˜ν™˜ν•œλ‹€. μ˜ˆμ‹œ console.log('01' == 1) // true, λ¬Έμžμ—΄ '01'이 숫자 1둜 λ³€ν™˜λœ ν›„ 비ꡐ 진행 console.log(true == 1) // true, true λŠ” 1, false λŠ” 0으둜 λ³€ν™˜λœ ν›„ 비ꡐ console.log(false == 0) // true console.log(0 === false) // false nullμ΄λ‚˜ undefined와 비ꡐ λ³€μˆ˜μ— 값이 null ..

πŸ“ƒ Front-End/JavaScript

엄격λͺ¨λ“œ(use strict)

ECMAScript5 λΆ€ν„° λ„μž…λœ κΈ°λŠ₯으둜 기쑴에 λ¬΄μ‹œλ˜λ˜ μ—λŸ¬λ“€λ‘œ ν•˜μ—¬κΈˆ μ—λŸ¬λ₯Ό λ°œμƒ μ‹œν‚΅λ‹ˆλ‹€. μ‚¬μš©ν•˜λŠ” 이유 μžλ°” μŠ€ν¬λ¦½νŠΈλŠ” κΈ°μ‘΄ κΈ°λŠ₯을 λ³€κ²½ν•˜μ§€ μ•ŠμœΌλ©΄μ„œ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•΄μ™”κΈ° λ•Œλ¬Έμ— ν˜Έν™˜μ„± λ¬Έμ œκ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ ES5λΆ€ν„° μƒˆλ‘œμš΄ κΈ°λŠ₯이 μΆ”κ°€λ˜κ³  κΈ°μ‘΄ κΈ°λŠ₯의 일뢀가 λ³€κ²½ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 그에 따라 κΈ°μ‘΄ κΈ°λŠ₯이 λ³€κ²½λ˜μ–΄ ν˜Έν™˜μ„±μ— λ¬Έμ œκ°€ μƒκΈ°κ²Œ λ˜μ—ˆκ³ , 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•œ 것이 엄격 λͺ¨λ“œ(strict mode) μž…λ‹ˆλ‹€. μ‚¬μš©ν•˜λŠ” 방법 "use strict"; // 이 μ½”λ“œλŠ” λͺ¨λ˜ν•œ λ°©μ‹μœΌλ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€. ... μ΅œμƒλ‹¨μ— μ„ μ–Έ ν•©λ‹ˆλ‹€. μœ„μ— 처럼 μ‚¬μš©ν•˜λ©΄ 파일 전체에 적용이되고, μ›ν•˜λŠ” ν•¨μˆ˜ μŠ€μ½”ν”„μ—λ§Œ 적용이 κ°€λŠ₯ ν•©λ‹ˆλ‹€. μ°Έκ³  MDN, use strict https://ko.javascript.inf..

HoHo.dev
'πŸ“ƒ Front-End' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘