[JS] 함수

Kng_db·2023년 1월 2일
0

모던 자바스크립트

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

문제

풀이

여기서 먼저 내가 알아야 할 것들에 대해서 정리를 해봤다.

  • 프롬프트 : prompt("","") // 앞의 ""는 메세지입력이고 뒤 ""default값! default값은 쉽게말해 초기value를 말한다.
  • 제곱근 : ** // 그러니, xn제곱 = x**n 으로 나타낼 수 있음.
  • 자연수 : Number.isInteger() // ()안의 값이 정수(자연수)이면 true 아니면 false 출력
    !! 자연수를 나타내는 함수와 메서드는 찾았지만,
    ( parseInt(), .toFixed(), Math.trunc() 등....)
    자연수를 표기해주는 것은 찾지못해서 자연수를 판별하는 메서드를 사용함

코드작성

그러면 하나씩 차례대로 풀어보자!!

  1. xn제곱근 출력 하는 함수 만들기
function pow(x, n){
	return x**n;
}

pow(prompt("x입력",""), prompt("n입력",""))

실행

잘 실행되는 것을 확인할 수 있다.

  1. n1이상의 자연수만 받고, 아니라면 알럿창 띄우기
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가 출력(true1로 인식)돼서 return x**n;을 실행했어야 정상인데
else {alert("자연수를 입력해주세요")}를 실행한 것이다.

그래서 다시한번 문제점을 찾아봤다.

문제점

내가 찾은 문제점은 prompt였다. prompt는 입력한 값을 문자열로 나타내기 때문에,
Number.isInteger(n)가 어떤 값을 넣어도 정수가 아니니 false로 나올 수 밖에 없는 구조였다. 그렇기 떄문에 if문을 지나 else가 실행된 것이다.

  1. 수정된 코드 입력
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.52.3 같은 소수들을 인식하지 못하고 계산하는 모습을 확인.
(아마도 배운 것 내에서 쉽게 작성하다보니 나타난 오류 같음)


느낀점

내가 원하는 모습으로 출력시키기 위해 코드의 오류를 하나씩 수정하는 과정이 좋았다.
그리고 아주 간단한 코드이긴 하지만, 기존의 방식보다 더 괜찮은 방식을 찾은 것 같아서 뿌듯했고, 코드엔 정답이 없다는 것 또한 다시 한 번 느꼈다.

profile
코딩 즐기는 사람

1개의 댓글

comment-user-thumbnail
2023년 1월 4일

자바스크립트도 꾸준히 공부하고 계시군요 멋지십니다 잘 읽고 가요!

답글 달기