[JS] ๋ณด์ ํคํจ๋ ์ ๋ ฅ error ์์ธ์ฒ๋ฆฌ(ft. isNaN)
ํ์ฌ์์ ์ด์ํ๊ณ ์๋ ์ฑ์ ๋ณด์ ํคํจ๋๋ฅผ ์ฌ์ฉํ๋ ์๋น์ค์์ ์๋ชป๋ ์ ๋ ฅ ๊ฐ์ผ๋ก ์ธํ ์ค๋ฅ์ ํธ๋ฌ๋ธ ์ํ ์ ์งํํ์ต๋๋ค.
์๋ฒ์์ input ๊ฐ ๊ฒ์ฆ์ ํตํด์ ์ ๋ฌด ์ค๋ฅ๋ฅผ ๋ฑ์ด๋ด ์๋ชป๋ ์ ๋ณด๊ฐ ์ ๋ฐ์ดํธ ๋์ง๋ ์์์์ง๋ง, ํ๋ฉด ์์ค(front end)์์ ์์ธ์ฒ๋ฆฌ ๋ฏธํก์ผ๋ก ์๋ชป๋ input ๊ฐ์ ์๋ฒ(back end) ์ธก์ผ๋ก ๋ณด๋ด๊ณ ์์์ ํ์ธํ์ต๋๋ค.
๐ฎ ๋ฌธ์ ์ํฉ
๋ณด์ ํคํจ๋์ ์ฌ์ฉํ๋ ์ด๋ฒคํธ์ value๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์์ numberic์ ๊ฒ์ฆ์ด ๋์ง ์์์ ์ซ์ํ ๊ฐ๋ง ๋ค์ด์์ผํ๋ ๋ถ๋ถ์ ์ค์ string์ด ๋ค์ด์ค๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
๐ ๏ธ ์กฐ์น๋ฐฉ๋ฒ
ํคํจ๋ ์ด๋ฒคํธ๋ฅผ ํตํด์ ๋ค์ด์ค๋ value ๊ฐ์ ํ๋ฉด์์ isNaN๋ฅผ ์ฌ์ฉํด ํ๋ฒ ๋ ์์ธ์ฒ๋ฆฌ ํ์์ต๋๋ค.
๊ธฐ์กด ๋ก์ง์ ๊ฒฝ์ฐ, value๊ฐ string์ผ๋ก ๋ค์ด์ค๋๋ฐ ํด๋น ๊ฐ์ด '1'...'9'(1~9) ๋ก ๋ค์ด์จ๋ค๋ ์์ ํ๊ณ ๊ฐ๋ฐ๋์ด ์์๊ธฐ์ ์ซ์ํ์ value๊ฐ ๋ค์ด์จ๋ค๋ฉด, ์ด๋ฅผ ์์ธ์ฒ๋ฆฌํ๊ธฐ ์ํด์ JS Number class์ isNaN ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ธ์ฒ๋ฆฌ ํ์์ต๋๋ค.
if (Number.isNaN(v) === false) {
// ์ซ์ํ v ๊ฐ ๋ค์ด์์์ผ๋ก ์ฒ๋ฆฌ
}
isNaN๋ ์ซ์ํ ๋ฐ์ดํฐ(numberic)๊ฐ ์๋ ๊ฒฝ์ฐ(NaN), true๋ฅผ return ํฉ๋๋ค.
์ฌ๊ธฐ์ ์ซ์ํ์ ์ค์ Number ํ์ ์ ๋ฐ์ดํฐ์ ์ซ์ํ์์ char('0' ~ '9')๋ฅผ ๋ชจ๋ ํฌํจ ํฉ๋๋ค.
โถ isNaN ์์
let n1 = '1'
let n2 = Number(n1) // 1
let r1 = Number.isNaN(n1)
let r2 = Number.isNaN(n2)
console.log('n1', n1)
console.log('n2', n2)
console.log('r1', r1)
console.log('r2', r2)
โถ ๊ฒฐ๊ณผ
> "n1" "1"
> "n2" 1
> "r1" false
> "r2" false
isNaN๋ static์ผ๋ก ํด๋น ๋ฉ์๋๋ง ๋ฐ๋ก ์ฌ์ฉํด๋ ๋์ง๋ง, ๋ช ํํ๊ธฐ Number.isNaN() ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ ๋ฉ๋๋ค.