๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/JavaScript

[JS] ๋ณด์•ˆ ํ‚คํŒจ๋“œ ์ž…๋ ฅ error ์˜ˆ์™ธ์ฒ˜๋ฆฌ(ft. isNaN)

728x90
๋ฐ˜์‘ํ˜•

ํšŒ์‚ฌ์—์„œ ์šด์˜ํ•˜๊ณ  ์žˆ๋Š” ์•ฑ์˜ ๋ณด์•ˆ ํ‚คํŒจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค์—์„œ ์ž˜๋ชป๋œ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜์˜ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์„œ๋ฒ„์—์„œ 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() ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ ๋ฉ๋‹ˆ๋‹ค.

 

 

728x90
๋ฐ˜์‘ํ˜•