TIL 3 : ๋ฌธ์์ด (JavaScript)
๋ฌธ์์ด (String)
ํญ์ read-only ๋ง ๊ฐ๋ฅํ๋ค๊ณ ํฉ๋๋ค. ์ธ๋ฑ์ค๋ก ์ ๊ทผ์ ๊ฐ๋ฅํ์ง๋ง ๋ฌธ์์ด ์์ฒด ๋ด์ฉ์ ๋ฐ๊ฟ ์๋ ์์ต๋๋ค.
ํ์ง๋ง ๋ฌธ์์ด๊ณผ ๋ฌธ์์ด ํน์ ๋ฌธ์์ด๊ณผ ๋ค๋ฅธ ํ์ ์ +๋ฅผ ์ฌ์ฉํด์ ์๋ก์ด ๋ฌธ์์ด์ ๋ง๋ค์ด ๋ผ ์ ์๋ค๊ณ ํฉ๋๋ค. ์ฆ, ๋ฌธ์์ด์ด ์๋ ๊ฒ๊ณผ ํฉํด๋ ๋ชจ๋ ๋ถ๋ถ์ด ๋ฌธ์์ด๋ก ๋ฐ๋๋๋ค. ์ฐธ๊ณ ๋ก, +๋์ concat์ ์ด์ฉํด๋ ๋๋ค๊ณ ํ๋ค์!
์ดํ ๋ฌธ์์ด๊ณผ ๊ด๋ จํ ์์ฑ(Property)๊ณผ ๋ฉ์๋(Method)๋ฅผ ๋ฐฐ์ ์ต๋๋ค.
์์ฑ์ผ๋ก๋ length๊ฐ ์์ต๋๋ค. ๋ฉ์๋๋ ์ข ๋ง์์ ๊ฐ ๋ฉ์๋๋ง๋ค ๋ฐ๋ก ์ ๋ฆฌํ๊ฒ ์ต๋๋ค.
indexOf
str.indexOf(searchValue)
arguments: ์ฐพ๊ณ ์ ํ๋ ๋ฌธ์์ด
์ฒ์์ผ๋ก ์ผ์นํ๋ ์ธ๋ฑ์ค์ ์์น๋ฅผ ๋ํ๋ด ์ค๋๋ค. ์ฐพ๊ณ ์ ํ๋ ๋ฌธ์์ด์ด ์๋ค๋ฉด -1์ด ๋์ต๋๋ค.
lastIndexOf๋ ๋ฌธ์์ด ๋ค์์๋ถํฐ ์ฐพ์์ค๋๋ค.
includes
str. includes(searchValue): Boolean์ผ๋ก ์ถ๋ ฅ๋จ
split
str.split(separator)
arguments: ๋ถ๋ฆฌ ๊ธฐ์ค์ด ๋ ๋ฌธ์์ด
๋ถ๋ฆฌ๋ ๋ฌธ์์ด์ด ํฌํจ๋ ๋ฐฐ์ด array๊ฐ ๋์ต๋๋ค.
csv๋ฅผ ์ด์ฉํ ๋ ์ ์ฉํ๋ค๊ณ ํฉ๋๋ค.
substring
str.substring(start, end): start์ end ์์๊ฐ ๋ฐ๋์ด๋ ์๊ด์์ต๋๋ค.
์์๊ฐ ๋ค์ด๊ฐ๋ฉด 0์ผ๋ก ๋ด ๋๋ค.
str='javascript'
str.substring(0,3)์ ๊ฒฐ๊ณผ๊ฐ: 'jav'
slice()
substring๊ณผ ๋น์ทํ์ง๋ง ๋ ๊ฐ์ง ์ธก๋ฉด์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์ด๊ฑด ํ์ด๋ถ ๋๋ถ์ ์๊ฒ ๋์ด์!
1. start > end์ธ ๊ฒฝ์ฐ.
substring์ ์๋์ผ๋ก start์ end์ ๊ฐ์ ๋ฐ๊พธ์ด์ ์ฒ๋ฆฌํ๋ ๋ฐ๋ฉด, slice๋ ""์ ๋ฆฌํดํฉ๋๋ค.
2. start๋ end์ ๊ฐ์ด ์์์ผ ๋
substring์ ์์ ๊ฐ์ 0์ผ๋ก ์ทจ๊ธํ๋ ๋ฐ๋ฉด, slice๋ ์์์๋ถํฐ๊ฐ ์๋ ๋ค์์๋ถํฐ ์์์ ์ ๋๊ฐ๋งํผ ๋จ์ด์ง ๋ฌธ์์ด์ ๋ฆฌํดํฉ๋๋ค.
์ ๋ ๊ฐ์ง ์ฐจ์ด์ ์ ๋ณด์์ ๋, ๊ฐ์ธ์ ์ผ๋ก slice๊ฐ ๋ ๋ฐฉํฅ์ฑ์ ์ค์ํ๋ ๋ฉ์๋ ๊ฐ๋ค์ (:
str.toLowerCase() / str.toUpperCase()
๋ชจ๋ ๋ฌธ์์ด์ ์๋ฌธ์/๋๋ฌธ์๋ก ๋ณํํด์ค๋๋ค.
immutable์ ์๋ณธ์ด ๋ณํ๊ฒ ํ์ง ์๋ ๋ฉ์๋ ์ ๋๋ค. mutable์ ์๋ณธ์ด ๋ณํ๊ฒ ๋๋ ๋ฉ์๋์ ๋๋ค.
๋ชจ๋ String์ immutable ํ๊ธฐ์ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํด๋ ์๋ณธ์ด ๋ณํ์ง ์์ต๋๋ค.
๋ฐ๋ฉด Array์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ฉ์๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ immutable๊ณผ mutable ์ฌ๋ถ๋ฅผ ์ ๊ธฐ์ตํด์ผ ํฉ๋๋ค.
str.trim()
๋ฌธ์์ด์ ์๋ค์ ์๋ ๊ณต๋ฐฑ์ ์์ ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํจ์์ ๋๋ค.
๊ณต๋ฐฑ ๋ฌธ์: ํญ(\t), Carriage return(\r\n), return ๋ฌธ์(\n)
str.match()
argument: ์ฐพ๊ณ ์ถ์ ๋ฌธ์์ด
๋ฌธ์์ด์ด ์ ๊ท์๊ณผ ๋งค์น๋๋ ๋ถ๋ถ์ ๊ฒ์ํด์ค๋๋ค.
srt.replace("๋บ ๋ฌธ์์ด", "์๋ก ๋ฃ์ ๋ฌธ์์ด")
replace() ํจ์๋ ์ ์ผ ๋จผ์ ์ผ์นํ๋ ํจํด๋ง ๋ณํ ํ ๋ฐ๊ฟ ๋ฟ ๋ชจ๋ ํ ์คํธ๋ฅผ ๋ฐ๊พธ์ง ์์ต๋๋ค.
์ ๊ทํํ์
๋ฌธ์์ด์ ๋ํ๋๋ ํน์ ๋ฌธ์ ์กฐํฉ๊ณผ ๋์์ํค๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํจํด์ ๋๋ค.
์ฝํ๋ฆฟ
- if (์กฐ๊ฑด) {return True}
์ด๋ค์ ์ค์ else ์์ด ๋ฐ๋ก return False ์ธ ์ ์์ต๋๋ค - ํ์ด์ฌ๊ณผ ๋ฌ๋ฆฌ ํ์ ๋ฐ๊ฟ์ค ๋, str()/num()์ด ์๋๋ผ String() / Number()๋ฅผ ์ด์ฉํฉ๋๋ค.
- ๊ณต๋ฐฑ ์ ๋ฌด์ ๊ฐ์ด ์์ ์คํ ํ๋๋ก ์ค๋ฅ๊ฐ ์์ฃผ ๋ฌ์ต๋๋ค. ํ์ดํํ ๋ ์ ์ํด์ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
- ์กฐ๊ฑด๋ฌธ์ด ์ด๋ ค์ด ํธ์ด์๋๋ฐ, ์ฐจ๊ทผ์ฐจ๊ทผ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ธ์ฐ๋ฉด ์๊ฐ์ ์ข ๊ฑธ๋ฆด์ง๋ผ๋ ์ ๋ต๋ฅ ์ ๋์์ง๋ ๊ฒ ๊ฐ์ต๋๋ค.
- Math.min() / Math.floor() / Math.round() / Math.ceil() ๋ฑ์ ๋ฐฐ์ธ ์ ์์์ต๋๋ค.
- ํํ์์ ํ์ฉํด์ ๋ฌธ์์ด์ ์ข ๋ ํธ๋ฆฌํ๊ฒ ํํํ ์ ์์์ต๋๋ค. 'ํ์ฌ ์๊ฐ์ ${hour} ์ ${minute}๋ถ ${sec} ์ด์ ๋๋ค.'๋ก ํํํ๋ ' ' + ' ' ๊ฐ์ด ๋ฒ๊ฑฐ๋กญ๊ฒ ์ธ ํ์๊ฐ ์์ต๋๋ค.
Check Point
์ธ์ ์ดํ ์ด์ ์ค๋ ๋ฐฐ์ ๋ ๋ด์ฉ์ด๋ ํท๊ฐ๋ ธ๋ ๋ถ๋ถ์ ๋ํด ๋ค์ ํ๋ฒ ์ ๋๋ก ์ ๋ฆฌํ ์ ์์์ต๋๋ค.
๊ฐ๋จํ ์ฝ๋์ฌ๋ ๋์ถฉ ์ค๋ช ํ๊ธฐ๋ณด๋ค๋ '์ ํํ ์ฉ์ด'๋ฅผ ์ฌ์ฉํด ์ค๋ช ํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ํฉ๋๋ค.
๋์ค์ ๋ค์ ํ๋ฒ ๋ณด๊ณ ์ถ์ด์ ์งค๋งํ๊ฒ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
- let์ ํ ๋ฒ๋ง ์ฌ์ฉํ๊ธฐ ์ํด์๋ ,๋ฅผ ์ด์ฉํด์ผ ํฉ๋๋ค.
let thing = 'A', num=1; - ()๋ ํจ์์ ์ ์ธ์ด๋ ํธ์ถํ ๋๋ง ์ฌ์ฉํฉ๋๋ค.
- parseFloat('1.43'): ๋ง ๊ทธ๋๋ก '์ค์๋ก ๋ณํํด์ค๋ค'๋ ๋ป์ ๋๋ค.
- Number('anything')์ ๊ฒฐ๊ณผ๊ฐ์ NaN์ ๋๋ค.
- return function ํ๋ฉด ํจ์ ์์ฒด๋ฅผ ๋ฆฌํดํด์ค๋๋ค.
return function()ํ๋ฉด ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฆฌํดํด์ค๋๋ค. - MECE (Mutually Exclusive Collectively Exhaustive์ ์ฝ์, ์ํธ ๋ฐฐ์ ์ ์ ์ฒด ํฌ๊ด)
์ค๋๋ ๋ง์ ๊ฒ์ ๋ฐฐ์ธ ์ ์๋ ํ๋ฃจ์์ต๋๋ค. ์กฐ๊ฑด๋ฌธ ์ฝํ๋ฆฟ ๋ท๋ถ๋ถ์์ ๋ฏ์ ๋ฌธ์ ๋ค์ด ์์ด ์ด์ง ๋ฉ๋ถ์ด ์์ง๋ง ๋๋ถ์ ๋ ์ด์ฌํ ๊ณต๋ถํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค์! ๊ทธ๋ฆฌ๊ณ ํ์ ์์์ ์ปค๋ฎค๋์ผ์ด์ ์ค์์ฑ๋ ๋ค์ ํ๋ฒ ๋๊ผ์ต๋๋ค. ๋จธ๋ฆฌ๋ก๋ ์๊ฒ ๋๋ฐ ํ์ด๋ถ๊ป ์๊ฒฌ์ ์ ์ํ๋ ค ํ ๋, ์ฆ ๋ง๋ก ํํ ํ๋ ค๊ณ ํ ๋ ์ด๋ ค์์ ๋๊ผ๋๋ฐ์. ๋ง์ด ๋งํ๊ณ ์ฌ์ฉํด๋ด์ผ ์ต์ํด์ง ๊ฒ ๊ฐ์ต๋๋ค. ๋ธ๋ก๊น ๋ ๋๋์ผ๋ ๋ง์ ์ค๋ ํ๋ ์ฝํ๋ฆฟ ๋ณด๋ฉด์ ํด๋ฆฐ ์ฝ๋ ๋ง๋ค๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์ง ๋ ์์๋ด์ผ๊ฒ ์ต๋๋ค.