λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

JavaScript

(15)
[ JavaScript ] var, let, const νŒŒν—€μΉ˜κΈ°. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν‚€μ›Œλ“œλŠ” var, let, const μ΄λ ‡κ²Œ 총 3가지가 μ‘΄μž¬ν•œλ‹€. 1. var var ν‚€μ›Œλ“œλŠ” ES6 이전( let, constκ°€ λ‚˜μ˜€κΈ° 이전 )에 λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ μ‚¬μš©ν•˜λ˜ ν‚€μ›Œλ“œμ˜€λ‹€. var ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ λŸ°νƒ€μž„ 이전에 μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 μ˜ν•΄ μ•”λ¬΅μ μœΌλ‘œ "μ„ μ–Έ"단계와 "μ΄ˆκΈ°ν™”"단계λ₯Ό 거치게 λœλ‹€. μ„ μ–Έ λ‹¨κ³„μ—μ„œλŠ” μŠ€μ½”ν”„μ— λ³€μˆ˜ μ‹λ³„μžλ₯Ό 등둝해 μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 λ³€μˆ˜μ˜ 쑴재λ₯Ό μ•Œλ¦¬κ³  κ·Έ μ¦‰μ‹œ μ΄ˆκΈ°ν™” λ‹¨κ³„μ—μ„œ undefined둜 λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™”ν•œλ‹€. var ν‚€μ›Œλ“œλŠ” λ³€μˆ˜ 블둝을 κ³ λ €ν•˜μ§€ μ•Šκ³ , ν˜„μž¬ ν•¨μˆ˜(var ν‚€μ›Œλ“œλ₯Ό μ„ μ–Έν•œ ν•¨μˆ˜)λ˜λŠ” μ „μ—­ μŠ€μ½”ν”„ μ–΄λ””μ—μ„œλ‚˜ μ ‘κ·Όν•  수 μžˆλŠ” λ³€μˆ˜λ₯Ό μ„ μ–Έν•œλ‹€. // λ³€μˆ˜ a에 λŒ€ν•΄ μ„ μ–Έ. var a; 이렇..
[ JavaScript / Error ] μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ Error 객체 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λŸ°νƒ€μž„ 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ Error 객체λ₯Ό 던져주고 κ°œλ°œμžλ“€μ€ 이λ₯Ό 톡해 μ—λŸ¬ 처리λ₯Ό ν•΄μ£Όκ³  디버깅을 ν•  수 μžˆλ‹€. Errorμƒμ„±μž ν•¨μˆ˜λ₯Ό 톡해 μ—λŸ¬ 객체λ₯Ό 생성할 수 μžˆλ‹€. Error μƒμ„±μž ν•¨μˆ˜λ₯Ό 톡해 μƒμ„±λœ μ—λŸ¬ κ°μ²΄λŠ” message ν”„λ‘œνΌν‹°(Error μƒμ„±μž ν•¨μˆ˜μ— 인수둜 μ „λ‹¬λœ μ—λŸ¬ 메세지)와 stack ν”„λ‘œνΌν‹°(μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚¨ μ½œμŠ€νƒμ˜ 호좜 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄)λ₯Ό κ°–λŠ”λ‹€. μ•„λž˜μ˜ ν‘œλ₯Ό 톡해 μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν‘œμ€€ λ‚΄μž₯ 였λ₯˜ μœ ν˜•μ— λŒ€ν•΄ μ•Œμ•„λ³΄μž. μœ ν˜•(μƒμ„±μž ν•¨μˆ˜) μΈμŠ€ν„΄μŠ€ EvalError μ „μ—­ ν•¨μˆ˜ eval()μ—μ„œ λ°œμƒν•˜λŠ” μ—λŸ¬ 객체 RangeError 숫자 λ³€μˆ˜λ‚˜ λ§€κ°œλ³€μˆ˜κ°€ 유효 λ²”μœ„λ₯Ό 벗어났을 λ•Œ λ°œμƒν•˜λŠ” μ—λŸ¬ 객체 ReferenceError 잘λͺ»λœ 참쑰에 λŒ€ν•΄ λ°œμƒν•˜λŠ” ..
[ Javascript ] μ›μ‹œ κ°’κ³Ό 객체의 차이에 λŒ€ν•΄ μ•Œμ•„λ³΄κΈ°. μ›μ‹œ κ°’ (Primitive) MDN - μ›μ‹œ κ°’ μ„€λͺ… μ›μ‹œ κ°’ - μš©μ–΄ 사전 | MDN JavaScriptμ—μ„œ μ›μ‹œ κ°’(primitive, λ˜λŠ” μ›μ‹œ μžλ£Œν˜•)μ΄λž€ 객체가 μ•„λ‹ˆλ©΄μ„œ λ©”μ„œλ“œλ„ 가지지 μ•ŠλŠ” λ°μ΄ν„°μž…λ‹ˆλ‹€. μ›μ‹œ κ°’μ—λŠ” 7μ’…λ₯˜, string, number (en-US), bigint (en-US), boolean, undefined, symbol, 그리고 null이 developer.mozilla.org μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ›μ‹œ 값은 객체가 μ•„λ‹ˆκ³ , λ©”μ„œλ“œλ₯Ό 가지지 μ•ŠλŠ” λ°μ΄ν„°λ‘œ μ•„λž˜μ™€ 같이 총 7κ°€μ§€μ˜ μ’…λ₯˜κ°€ μ‘΄μž¬ν•œλ‹€. - string - number - bigint - boolean - undefined - symbol - null μ›μ‹œ νƒ€μž…μ˜ 값은 λ³€κ²½ λΆˆκ°€λŠ₯ν•œ κ°’μœΌλ‘œ, λ³€μˆ˜μ— μ›μ‹œ 값을 μž¬ν• ..
[ Javascript ] μžλ°”μŠ€ν¬λ¦½νŠΈ String 정리. String String은 ν‘œμ€€ 빌트인 객체둜, λ¬Έμžμ—΄(μ›μ‹œ νƒ€μž…)을 λ‹€λ£° λ•Œ μ‚¬μš©λ˜λŠ” ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•œλ‹€. String νŠΉμ§• β†’ String μƒμ„±μž ν•¨μˆ˜μ— 인수λ₯Ό μ „λ‹¬ν•˜μ§€ μ•Šκ³  new μ—°μ‚°μžμ™€ ν•¨κ»˜ ν˜ΈμΆœν•˜λ©΄ [[StringData]] λ‚΄λΆ€ μŠ¬λ‘―μ— 빈 λ¬Έμžμ—΄μ„ ν• λ‹Ήν•œ String 래퍼 객체λ₯Ό μƒμ„±ν•œλ‹€. β†’ String 래퍼 κ°μ²΄λŠ” λ°°μ—΄μ²˜λŸΌ lengthν”„λ‘œνΌν‹°μ™€ index(인덱슀λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 숫자둜 된 λ¬Έμžμ—΄μ˜ ν”„λ‘œνΌν‹° ν‚€)λ₯Ό κ°–κ³ , 각각의 문자λ₯Ό ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ κ°–λŠ” μœ μ‚¬ λ°°μ—΄ 객체 μ΄λ©΄μ„œ, μ΄ν„°λŸ¬λΈ” 이기 λ•Œλ¬Έμ— λ°°μ—΄κ³Ό μœ μ‚¬ν•˜κ²Œ indexλ₯Ό μ‚¬μš©ν•˜μ—¬ 각 λ¬Έμžμ— 접근이 κ°€λŠ₯ν•˜λ‹€. β†’ λ¬Έμžμ—΄μ— index둜 μ ‘κ·Όν•˜μ—¬ ν”„λ‘œνΌν‹° 값을 변경해도 μ—λŸ¬λŠ” λ°œμƒν•˜μ§€ μ•Šμ§€λ§Œ, λ¬Έμžμ—΄μ€ μ›μ‹œ 값이기 λ•Œλ¬Έμ— 값이 λ³€..
[ JavaScript / μ—°μ‚°μž ] μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜μ—¬ null λ˜λŠ” undefined 처리 방법. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ°μ΄ν„°μ˜ 값이 μœ νš¨ν•œμ§€ 여뢀에 따라 ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘° ν•  경우 μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜μ—¬ μ²˜λ¦¬ν•˜λŠ” 방법에 λŒ€ν•΄ μ •λ¦¬ν•˜λŠ” κΈ€-! πŸ‘‰ μš°μ„  falsy값에 λŒ€ν•΄ μ•Œμ•„λ³΄μž-! μ•„λž˜μ™€ 같은 아이듀이 falsyκ°’μœΌλ‘œ λΆ„λ₯˜λœλ‹€. - false; - null; - NaN; - 0; - empty string ("" or '' or ``); - undefined. 1. 데이터가 null λ˜λŠ” undefined 만 해당될 λ•Œ null 병합 μ—°μ‚°μž(??) μ‚¬μš© let data = { name: null, age: 20 }; const userName = data.name ?? '이름을 μž…λ ₯ν•΄ μ£Όμ„Έμš”.'; console.log(userName); // 이름을 μž…λ ₯ν•΄ μ£Όμ„Έμš”. E11μ—μ„œ λ„μž…λœ null 병합 μ—°μ‚°μž(??)..
[ JavaScript / μ •κ·œν‘œν˜„μ‹ ] μžλ°”μŠ€ν¬λ¦½νŠΈ μ •κ·œν‘œν˜„μ‹ 정리 <1> 좜처: MDN Web Docs μ •κ·œν‘œν˜„μ‹ (μ •κ·œμ‹) - Regular expression μ •κ·œ ν‘œν˜„μ‹μ€ λ¬Έμžμ—΄μ— λ‚˜νƒ€λ‚˜λŠ” νŠΉμ • 문자 μ‘°ν•©κ³Ό λŒ€μ‘μ‹œν‚€κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” νŒ¨ν„΄μœΌλ‘œ, μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ •κ·œ ν‘œν˜„μ‹ λ˜ν•œ 객체이닀. 이 νŒ¨ν„΄λ“€μ€ RegExp의 exec, test λ©”μ†Œλ“œμ™€ String의 match, replace, search, split λ©”μ†Œλ“œμ™€ ν•¨κ»˜ 쓰인닀. μ •κ·œ ν‘œν˜„μ‹μ„ λ§Œλ“œλŠ” 방법 1. μ •κ·œμ‹ λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•˜λŠ” 방법 ( μ •κ·œμ‹μ΄ κ°’(=νŒ¨ν„΄)이 λ³€ν•˜μ§€ μ•ŠλŠ” μƒμˆ˜μΌ λ•Œ μ‚¬μš©ν•˜λŠ” 것을 μΆ”μ²œ ) μŠ¬λž˜μ‹œ( / )둜 κ°μ‹ΈλŠ” νŒ¨ν„΄μ„ μ‚¬μš©ν•˜μ—¬ λ§Œλ“œλŠ” 방법이닀. μ •κ·œμ‹ λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•˜κ²Œ 되면 μŠ€ν¬λ¦½νŠΈκ°€ λΆˆλŸ¬μ™€μ§ˆ λ•Œ 컴파일 λœλ‹€. var re = /ab+c/; 2. RegExp 객체의 μƒμ„±μž ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” 방법..
[ JavaScript / κ°•μ œλ³€ν™˜ ] 동등비ꡐ '=='와 '===' 의 μ •ν™•ν•œ 차이에 λŒ€ν•˜μ—¬ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 동등 μ—°μ‚°μžλŠ” == μ—°μ‚°μž (loose equlas) === μ—°μ‚°μž (strict equlas) μ΄λ ‡κ²Œ 2가지가 각각 쓰인닀. 두 μ—°μ‚°μž λͺ¨λ‘ κ°’μ˜ 동등함을 λΉ„κ΅ν•˜μ§€λ§Œ, loose(λŠμŠ¨ν•œ)와 strict(μ—„κ²©ν•œ)μ΄λΌλŠ” 차이가 μžˆλ‹€. 이 'λŠμŠ¨ν•œ' 비ꡐ와 'μ—„κ²©ν•œ' λΉ„κ΅μ˜ μ •ν™•ν•œ μ°¨μ΄λŠ” λ¬΄μ—‡μΌκΉŒ? You Don't Know JSλ₯Ό 읽기 μ „κΉŒμ§€μ˜ λ‚˜λŠ” '== μ—°μ‚°μž'λŠ” 값이 λ™λ“±ν•œ 지λ₯Ό λΉ„κ΅ν•˜κ³ , '=== μ—°μ‚°μž'λŠ” κ°’κ³Ό νƒ€μž… λ˜ν•œ λ™λ“±ν•œ 지 λΉ„κ΅ν•œλ‹€κ³  μƒκ°ν–ˆμ—ˆλ‹€. ν•˜μ§€λ§Œ 이 μ±…μ—μ„œλŠ” μœ„μ™€ 같은 생각을 λΉ„μŠ·ν•˜μ§€λ§Œ μ •ν™•ν•˜μ§€ μ•Šλ‹€κ³  κΌ¬μ§‘λŠ”λ‹€. μˆ˜λ§Žμ€ μžλ°”μŠ€ν¬λ¦½νŠΈ μ±…μ—μ„œλ„ μ΄λ ‡κ²Œ μ“°μ—¬μžˆμ§€λ§Œ λΆˆν–‰ν•˜κ²Œλ„ λ‹€ ν‹€λ Έλ‹€κ³  μ΄μ•ΌκΈ°ν•œλ‹€. 이 μ±…μ—μ„œ λ‚˜μ˜€λŠ” '==μ—°μ‚°μž'와 '===μ—°μ‚°μž'의 μ •ν™•ν•œ μ •μ˜λŠ” ==λŠ”..