모던 자바스크립트의 기초 - '함수'의 문제를 풀면서 내가 배우고 이해한 것을 적어보자.
여기서 먼저 내가 알아야 할 것들에 대해서 정리를 해봤다.
- 프롬프트 :
prompt("","")
// 앞의""
는 메세지입력이고 뒤""
는default
값!default
값은 쉽게말해초기value
를 말한다.- 제곱근 :
**
// 그러니,x
의n
제곱 =x**n
으로 나타낼 수 있음.- 자연수 :
Number.isInteger()
//()
안의 값이 정수(자연수)이면true
아니면false
출력
!! 자연수를 나타내는 함수와 메서드는 찾았지만,
(parseInt()
,.toFixed()
,Math.trunc()
등....)
자연수를 표기해주는 것은 찾지못해서 자연수를 판별하는 메서드를 사용함
그러면 하나씩 차례대로 풀어보자!!
x
의n
제곱근 출력 하는 함수 만들기
function pow(x, n){
return x**n;
}
pow(prompt("x입력",""), prompt("n입력",""))
실행
잘 실행되는 것을 확인할 수 있다.
n
은1
이상의 자연수만 받고, 아니라면 알럿창 띄우기
function pow(x, n){
if(Number.isInteger(n) > 0){
return x**n;
} else {
alert("자연수를 입력해주세요")
}
}
pow(prompt("x입력",""), prompt("n입력",""))
실행
❗❗어떤 수를 넣어도 자연수를 입력해달라는 문자가 나온다.
그래서 가장 먼저 확인한 것은 Number.isInteger(n)
이다.
Number.isInteger(n)
은 boolean
값을 출력하기 때문에 안된다고 생각했으나,
생각해보니 0
이 아닌 수나 문자를 넣었을때는
true
가 출력(true
는 1
로 인식)돼서 return x**n;
을 실행했어야 정상인데
else {alert("자연수를 입력해주세요")}
를 실행한 것이다.
그래서 다시한번 문제점을 찾아봤다.
내가 찾은 문제점은 prompt
였다. prompt
는 입력한 값을 문자열로 나타내기 때문에,
Number.isInteger(n)
가 어떤 값을 넣어도 정수가 아니니 false
로 나올 수 밖에 없는 구조였다. 그렇기 떄문에 if
문을 지나 else
가 실행된 것이다.
- 수정된 코드 입력
function pow(x, n){
if(Number.isInteger(n) === true){ // Number.isInteger(n) 는 boolean값을 받기 때문에,
return x**n; // '> 0'를 '=== true'로 수정
} else {
alert("자연수를 입력해주세요")
}
}
pow(+prompt("x입력",""), +prompt("n입력","")) // prompt앞에 '+'를 붙임으로 숫자형으로 변환
// Number(prompt()) 해준 것과 같음!
자연수 이외의 값을 넣었을 때는 알럿창이 뜨고 자연수를 넣엇을 때는 실행이 잘 되는 것을 확인했다.
1.5
나 2.3
같은 소수들을 인식하지 못하고 계산하는 모습을 확인.
(아마도 배운 것 내에서 쉽게 작성하다보니 나타난 오류 같음)
내가 원하는 모습으로 출력시키기 위해 코드의 오류를 하나씩 수정하는 과정이 좋았다.
그리고 아주 간단한 코드이긴 하지만, 기존의 방식보다 더 괜찮은 방식을 찾은 것 같아서 뿌듯했고, 코드엔 정답이 없다는 것 또한 다시 한 번 느꼈다.
자바스크립트도 꾸준히 공부하고 계시군요 멋지십니다 잘 읽고 가요!