다각형 넓이 구하기
app.js
const Area = require('./area.js')
const calcArea = new Area()
const {log} = console
log(calcArea.getCircleArea(2))
log(calcArea.getRectArea(2, 4))
log(calcArea.getTrapeArea(1, 2, 4))
log(calcArea.getCylineArea(2, 4))
area.js
const {
PI
} = Math
const NUM_CIRCLE_PARAM = 1,
NUM_RECT_PARAM = 2,
NUM_TRAPE_PARAM = 3,
NUM_CYLINE_PARAM = 2
const isNumber = (param) => {
return Number.isFinite(param) &&
typeof param === "number"
}
const paramCheck = (l, args) => {
if (![...args].every(isNumber)) throw Error("인자는 숫자만 가능합니다.")
if (args.length !== l) throw Error(`인자 ${l}개가 필요합니다.`)
return true
}
module.exports = class Area {
getCircleArea(r) {
if (paramCheck(NUM_CIRCLE_PARAM, arguments)) return PI * r * r
}
getRectArea(w, h) {
if (paramCheck(NUM_RECT_PARAM, arguments)) return w * h
}
getTrapeArea(uw, dw, h) {
if (paramCheck(NUM_TRAPE_PARAM, arguments)) return ((uw + dw) * h) / 2
}
getCylineArea(r, h) {
if (paramCheck(NUM_CYLINE_PARAM, arguments)) {
let circleArea = this.getCircleArea(r)
let rectArea = this.getRectArea(2 * r * PI, h)
return circleArea * 2 + rectArea
}
}
}
Difference between isFinite() and Number.isFinite()
두 메서드 모두 주어진 값이 유한수 인지 판별하는 메서드지만 전역에 선언되어있는 isFinite()
와 다르게 Number.isFinite()
주어진 값을 숫자로 변환하지 않습니다.
따라서 값이 숫자이고 유한수가 아닌 경우에 true
를 반환합니다.
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false
Number.isFinite(0); // true
Number.isFinite(2e64); // true
Number.isFinite('0'); // false
// 전역함수 isFinite('0')라면 true
Number.isFinite(null); // false
// 전역함수 isFinite(null)라면 true
출처
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite
'Study > Today I Learn' 카테고리의 다른 글
[TIL] 2019.04.09 - 다각형 넓이 구하기 (2) (0) | 2019.04.09 |
---|---|
[TIL] 2019.04.09 (0) | 2019.04.09 |
[TIL] 2019.04.08 - debug (0) | 2019.04.08 |
[TIL] 2019.04.05 - Algorithm (0) | 2019.04.07 |
[TIL] 2019.04.05 (0) | 2019.04.05 |