λ°˜μ‘ν˜•

JavaScript 33

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€/JS] λ¬Έμžμ—΄ μ •λ ¬ν•˜κΈ° (2)

Problem Description μ˜μ–΄ λŒ€μ†Œλ¬Έμžλ‘œ 이루어진 λ¬Έμžμ—΄ my_string이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, my_string을 λͺ¨λ‘ μ†Œλ¬Έμžλ‘œ λ°”κΎΈκ³  μ•ŒνŒŒλ²³ μˆœμ„œλŒ€λ‘œ μ •λ ¬ν•œ λ¬Έμžμ—΄μ„ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄λ³΄μ„Έμš”. Restrictions. 0

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€/JS] μ£Όμ‚¬μœ„μ˜ 개수

Problem Description λ¨Έμ“±μ΄λŠ” 직윑면체 λͺ¨μ–‘μ˜ μƒμžλ₯Ό ν•˜λ‚˜ 가지고 μžˆλŠ”λ° 이 μƒμžμ— μ •μœ‘λ©΄μ²΄ λͺ¨μ–‘μ˜ μ£Όμ‚¬μœ„λ₯Ό μ΅œλŒ€ν•œ 많이 μ±„μš°κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. μƒμžμ˜ κ°€λ‘œ, μ„Έλ‘œ, 높이가 μ €μž₯λ˜μ–΄μžˆλŠ” λ°°μ—΄ box와 μ£Όμ‚¬μœ„ λͺ¨μ„œλ¦¬μ˜ 길이 μ •μˆ˜ n이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ‘Œμ„ λ•Œ, μƒμžμ— λ“€μ–΄κ°ˆ 수 μžˆλŠ” μ£Όμ‚¬μœ„μ˜ μ΅œλŒ€ 개수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”. Restrictions. box의 κΈΈμ΄λŠ” 3μž…λ‹ˆλ‹€. box[0] = μƒμžμ˜ κ°€λ‘œ 길이 box[1] = μƒμžμ˜ μ„Έλ‘œ 길이 box[2] = μƒμžμ˜ 높이 길이 Input/Output Example μž…μΆœλ ₯ 예 #1 μƒμžμ˜ 크기가 κ°€λ‘œ 1, μ„Έλ‘œ 1, 높이 1μ΄λ―€λ‘œ λͺ¨μ„œλ¦¬μ˜ 길이가 1인 μ£Όμ‚¬μœ„λŠ” 1개 λ“€μ–΄κ°ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. μž…μΆœλ ₯ 예 #2 μƒμžμ˜ 크기가..

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€/JS] 각도기

Problem Description κ°μ—μ„œ 0도 초과 90도 λ―Έλ§Œμ€ 예각, 90λ„λŠ” 직각, 90도 초과 180도 λ―Έλ§Œμ€ 둔각 180λ„λŠ” ν‰κ°μœΌλ‘œ λΆ„λ₯˜ν•©λ‹ˆλ‹€. 각 angle이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ 예각일 λ•Œ 1, 직각일 λ•Œ 2, 둔각일 λ•Œ 3, 평각일 λ•Œ 4λ₯Ό returnν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”. Restrictions 0 angle이 0보닀 크고 90보닀 μž‘μ€ κ²½μš°μ— 쑰건이 참이 됨 Another solutions function solution(angle) { return [0, 90, 91, 180].filter(x => angle>=x).length; } function solution(angle) { return angle < 90 ? 1 : angle === 90 ? 2 : a..

[Chart.js] YμΆ• μ΅œλŒ€κ°’ λ™μ μœΌλ‘œ μ„€μ •ν•˜λŠ” 방법

Intro μ•ˆλ…•ν•˜μ„Έμš”. 이번 μ‹œκ°„μ—λŠ” Chart.jsμ—μ„œ YμΆ• μ΅œλŒ€κ°’μ„ λ™μ μœΌλ‘œ μ„€μ •ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. Case μš°μ„  Chart μ»΄ν¬λ„ŒνŠΈλ₯Ό ν™œμš©ν•˜λŠ” 뢀뢄은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. option에 따라 ν‘œμ‹œν•˜λŠ” 데이터λ₯Ό λ‹€λ₯΄κ²Œ retrun ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 데이터가 λ™μ μœΌλ‘œ 달라지닀 λ³΄λ‹ˆ yμΆ• λ²”μœ„ μ΅œλŒ€κ°’λ„ ν•΄λ‹Ή datasets에 맞게 λ‹€λ₯΄κ²Œ ν‘œμ‹œν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€. const getData = (option: string): ChartData['datasets'] => { if (option === 'hourly') { return [ { fill: false, ..., data: [0, 150, 180, 270, 210, 160, 160, 202, 265, 210, 270, 255, 290, 3..

Library 2023.06.28

[λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive] 16μž₯ ν”„λ‘œνΌν‹° μ–΄νŠΈλ¦¬λ·°νŠΈ(property attribute)λž€?

16.1 λ‚΄λΆ€ 슬둯과 λ‚΄λΆ€ λ©”μ„œλ“œ λ‚΄λΆ€ 슬둯 (internal slot)κ³Ό λ‚΄λΆ€ λ©”μ„œλ“œ (internal method)λŠ” JS μ—”μ§„μ˜ κ΅¬ν˜„ μ•Œκ³ λ¦¬μ¦˜μ„ μ„€λͺ…ν•˜κΈ° μœ„ν•΄ ECMAScript μ‚¬μ–‘μ—μ„œ μ‚¬μš©ν•˜λŠ” μ˜μ‚¬ ν”„λ‘œνΌν‹° pseudo property와 μ˜μ‚¬ λ©”μ„œλ“œ pseudo method μž…λ‹ˆλ‹€. λͺ¨λ“  κ°μ²΄λŠ” [[Prototype]] μ΄λΌλŠ” λ‚΄λΆ€ μŠ¬λ‘―μ„ κ°–μŠ΅λ‹ˆλ‹€. λ‚΄λΆ€ μŠ¬λ‘―μ€ JS μ—”μ§„μ˜ λ‚΄λΆ€ λ‘œμ§μ΄λ―€λ‘œ μ›μΉ™μ μœΌλ‘œ 직접 μ ‘κ·Όν•  수 μ—†μ§€λ§Œ __proto__λ₯Ό 톡해 κ°„μ ‘ 접근이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 16.2 ν”„λ‘œνΌν‹° μ–΄νŠΈλ¦¬λ·°νŠΈμ™€ ν”„λ‘œνΌν‹° λ””μŠ€ν¬λ¦½ν„° 객체 Js 엔진은 ν”„λ‘œνΌν‹°λ₯Ό 생성할 λ•Œ ν”„λ‘œνΌν‹°μ˜ μ–΄νŠΈλ¦¬λ·°νŠΈλ₯Ό κΈ°λ³Έκ°’μœΌλ‘œ μžλ™ μ •μ˜ν•©λ‹ˆλ‹€. ν”„λ‘œνΌν‹°μ˜ μƒνƒœλž€ κ°’ (value), κ°’μ˜ κ°±μ‹  κ°€λŠ₯ μ—¬λΆ€ (writable), μ—΄κ±°..

[λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive] 14μž₯ μ „μ—­ λ³€μˆ˜μ˜ 문제점

14.1 λ³€μˆ˜μ˜ 생λͺ…μ£ΌκΈ° 14.1.1 지역 λ³€μˆ˜μ˜ 생λͺ…μ£ΌκΈ° 지역 λ³€μˆ˜μ˜ 생λͺ… μ£ΌκΈ°λŠ” ν•¨μˆ˜μ˜ 생λͺ… 주기와 μΌμΉ˜ν•©λ‹ˆλ‹€. function foo() { var x = 'local' // λ³€μˆ˜ x 생성, λ³€μˆ˜ x에 κ°’ ν• λ‹Ή console.loog(x) return x // λ³€μˆ˜ μ†Œλ©Έ } foo(); console.log(x); // x is not defined ν˜Έμ΄μŠ€νŒ…μ€ μŠ€μ½”ν”„λ₯Ό λ‹¨μœ„λ‘œ λ™μž‘ν•©λ‹ˆλ‹€. ν˜Έμ΄μŠ€νŒ…μ€ λ³€μˆ˜ 선언이 μŠ€μ½”ν”„μ΄ μ„ λ‘λ‘œ λŒμ–΄ μ˜¬λ €μ§„ κ²ƒμ²˜λŸΌ λ™μž‘ν•˜λŠ” JS 고유의 νŠΉμ§•μ„ λ§ν•©λ‹ˆλ‹€. 14.1.2 μ „μ—­ λ³€μˆ˜μ˜ 생λͺ… μ£ΌκΈ° ν•¨μˆ˜μ™€ 달리 μ „μ—­ μ½”λ“œλŠ” λͺ…μ‹œμ μΈ 호좜 없이 μ‹€ν–‰λ©λ‹ˆλ‹€. var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ μ „μ—­ λ³€μˆ˜λŠ” μ „μ—­ 객체의 ν”„λ‘œνΌν‹°κ°€ λ©λ‹ˆλ‹€. μ΄λŠ” μ „μ—­ λ³€μˆ˜μ˜ 생λͺ… μ£ΌκΈ°κ°€ μ „μ—­ 객체의 생λͺ… 주기와 ..

[JavaScript] νŠΉμ • μš”μ†Œ element μœ„μΉ˜λ‘œ 슀크둀 μ΄λ™ν•˜λŠ” 방법 scrollIntoView

Intro μ•ˆλ…•ν•˜μ„Έμš”. λͺ¨λ°”일 λ„€λΉ„κ²Œμ΄μ…˜ λ©”λ‰΄μ—μ„œ 슀크둀 이동을 ν‘œν˜„ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬λŸ¬ 방법이 μžˆκ² μ§€λ§Œ μ €λŠ” νŠΉμ • μš”μ†Œ μœ„μΉ˜λ‘œ 슀크둀 이동할 수 μžˆλŠ” scrollIntoView ν•¨μˆ˜λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. Syntax scrollIntoView() scrollIntoView(alignToTop) scrollIntoView(scrollIntoViewOptions) alignToTop - true : aligned to the top 상단 κΈ°μ€€ 슀크둀 이동 | scrollIntoViewOptions: {block: "start", inline: "nearest"} - false : aligned to the bottom ν•˜λ‹¨ κΈ°μ€€ 슀크둀 이동 | scrollIntoViewOptions: {block: "end",..

[λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive] 13μž₯ μŠ€μ½”ν”„

13.1 μŠ€μ½”ν”„λž€?λͺ¨λ“  μ‹λ³„μž(λ³€μˆ˜ 이름, ν•¨μˆ˜ 이름, 클래슀 이름 λ“±)λŠ” μžμ‹ μ΄ μ„ μ–Έλœ μœ„μΉ˜μ— μ˜ν•΄ λ‹€λ₯Έ μ½”λ“œκ°€ μ‹λ³„μž μžμ‹ μ„ μ°Έμ‘°ν•  수 μžˆλŠ” 유 λ²”μœ„κ°€ κ²°μ •λ˜λΉ„λ‹€. 이λ₯Ό μŠ€μ½”ν”„λΌκ³  ν•©λ‹ˆλ‹€. 즉 μŠ€μ½”ν”„λŠ” μ‹λ³„μžκ°€ μœ νš¨ν•œ λ²”μœ„λ₯Ό λ§ν•©λ‹ˆλ‹€. var x = 'global' function foo() { var x = 'local' console.log(x) //local } foo() console.log(x) //global 13.2 μŠ€μ½”ν”„μ˜ μ’…λ₯˜μ½”λ“œλŠ” μ „μ—­κ³Ό μ§€μ—­μœΌλ‘œ ꡬ뢄할 수 μžˆμŠ΅λ‹ˆλ‹€ 13.2.1 μ „μ—­κ³Ό 지역 μŠ€μ½”ν”„μ „μ—­μ΄λž€ μ½”λ“œμ˜ κ°€μž₯ λ°”κΉ₯ μ˜μ—­μ„ λ§ν•©λ‹ˆλ‹€. 전역은 μ „μ—­ μŠ€μ½”ν”„λ₯Ό λ§Œλ“­λ‹ˆλ‹€. μ „μ—­ λ³€μˆ˜λŠ” μ–΄λ””μ„œλ“  μ°Έμ‘°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 13.2.2 지역과 지역 μŠ€μ½”ν”„μ§€μ—­μ΄λž€ ν•¨μˆ˜ λͺΈμ²΄ λ‚΄λΆ€λ₯Ό λ§ν•©λ‹ˆλ‹€. 지..

[λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive] 12μž₯ ν•¨μˆ˜

12.1 ν•¨μˆ˜λž€? ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ ν•¨μˆ˜λŠ” 일련의 과정을 λ¬Έ(statement)으둜 κ΅¬ν˜„ν•˜κ³  μ½”λ“œ λΈ”λ‘μœΌλ‘œ κ°μ‹Έμ„œ ν•˜λ‚˜μ˜ μ‹€ν–‰ λ‹¨μœ„λ‘œ μ •μ˜ν•œ κ²ƒμž…λ‹ˆλ‹€. ν•¨μˆ˜ λ‚΄λΆ€λ‘œ μž…λ ₯을 μ „λ‹¬λ°›λŠ” λ³€μˆ˜λ₯Ό (parameter), μž…λ ₯을 (argument), 좜λ ₯을 λ°˜ν™˜κ°’return value)라고 ν•©λ‹ˆλ‹€. 12.2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 이유 μ½”λ“œμ˜ μž¬μ‚¬μš© μΈ‘λ©΄, μœ μ§€λ³΄μˆ˜μ™€ νŽΈμ˜μ„±μ„ 높이고 μ½”λ“œμ˜ 신뒰성을 λ†’μ΄λŠ” νš¨κ³Όκ°€ μžˆμŠ΅λ‹ˆλ‹€. 12.3 ν•¨μˆ˜ λ¦¬ν„°λŸ΄ λ¦¬ν„°λŸ΄μ€ μ‚¬λžŒμ΄ 이해할 수 μžˆλŠ” 문자 λ˜λŠ” μ•½μ†λœ 기호둜 μ‚¬μš©ν•΄ 값을 μƒμ„±ν•˜λŠ” ν‘œκΈ° 방식을 λ§ν•©λ‹ˆλ‹€. 즉 λ¦¬ν„°λŸ΄μ€ 값을 μƒμ„±ν•˜κΈ° μœ„ν•œ ν‘œκΈ°λ²•μž…λ‹ˆλ‹€. λ”°λΌμ„œ ν•¨μˆ˜ λ¦¬ν„°λŸ΄λ„ ν‰κ°€λ˜μ–΄ 값을 μƒμ„±ν•˜λ©°, 이 값은 κ°μ²΄μž…λ‹ˆλ‹€. 즉 ν•¨μˆ˜λŠ” κ°μ²΄μž…λ‹ˆλ‹€. 12.4 ν•¨μˆ˜ μ •μ˜ 1. ν•¨μˆ˜ μ„ μ–Έλ¬Έ fu..

[λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive] 06μž₯ 데이터 νƒ€μž…

이 글은 λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive λ°”νƒ•μœΌλ‘œ μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. 6.1 숫자 νƒ€μž… μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” C/Java와 달리 ν•˜λ‚˜μ˜ 숫자 νƒ€μž…λ§Œ μ‘΄μž¬ν•©λ‹ˆλ‹€. 6.2 λ¬Έμžμ—΄ νƒ€μž… λ¬Έμžμ—΄ νƒ€μž…μ€ ν…μŠ€νŠΈ 데이터λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 데 μ‚¬μš©ν•©λ‹ˆλ‹€. 6.3 ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄ ES6λΆ€ν„° ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄μ΄λΌκ³  ν•˜λŠ” μƒˆλ‘œμš΄ λ¬Έμžμ—΄ ν‘œκΈ°λ²•μ΄ λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 백틱을 μ‚¬μš©ν•©λ‹ˆλ‹€. 6.4 λΆˆλ¦¬μ–Έ νƒ€μž… λΆˆλ¦¬μ–Έ νƒ€μž…μ˜ 값은 논리적 μ°Έ, 거짓을 λ‚˜νƒ€λ‚΄λŠ” true와 false λΏμž…λ‹ˆλ‹€. 6.5 undefined νƒ€μž… undefined νƒ€μž…μ˜ 값은 undefinedκ°€ μœ μΌν•©λ‹ˆλ‹€. undefinedλŠ” κ°œλ°œμžκ°€ μ˜λ„μ μœΌλ‘œ ν• λ‹Ήν•˜κΈ° μœ„ν•œ 값이 μ•„λ‹ˆλΌ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™”ν•  λ•Œ μ‚¬μš©ν•˜λŠ” κ°’μž…λ‹ˆλ‹€. λ³€μˆ˜μ— 값이 μ—†λ‹€λŠ” 것을 λͺ…μ‹œν•˜κ³  싢을 λ•ŒλŠ” ..

λ°˜μ‘ν˜•