모던 자바스크립트의 기초 - '함수'의 문제를 풀면서 내가 배우고 이해한 것을 적어보자.

여기서 먼저 내가 알아야 할 것들에 대해서 정리를 해봤다.
- 프롬프트 :
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 같은 소수들을 인식하지 못하고 계산하는 모습을 확인.
(아마도 배운 것 내에서 쉽게 작성하다보니 나타난 오류 같음)
내가 원하는 모습으로 출력시키기 위해 코드의 오류를 하나씩 수정하는 과정이 좋았다.
그리고 아주 간단한 코드이긴 하지만, 기존의 방식보다 더 괜찮은 방식을 찾은 것 같아서 뿌듯했고, 코드엔 정답이 없다는 것 또한 다시 한 번 느꼈다.
자바스크립트도 꾸준히 공부하고 계시군요 멋지십니다 잘 읽고 가요!