Функции для вычисления длины и площади окружности JS

Товарищи, доброго времени суток!

Есть задача:

Пользователь вводит число R. Написать программу, которая выведет в консоль длину окружности и площадь круга с радиусом R.

Изначально для решения задачи я написала две функции следующего содержания:

const r = +prompt('Enter a number');

function circleLength(r) {
    let length = 2 * Math.PI * r;
    console.log(Math.round(length));
};

function circleSquare(r) {
    let square = Math.PI * Math.pow(r, 2);
    console.log(Math.round(square));
};

circleLength();
circleSquare();

Вывод в консоли (во всплывающем окне prompt введена цифра 4):

NaN
NaN

Знатно поругавшись, стала искать другие варианты решения задачи. Нашла следующее решение, оно выводит корректные значения:

const r = +prompt('Enter a number');

const circleLength = 2 * Math.PI * r;
console.log(Math.round(circleLength));

const circleSquare = Math.PI * Math.pow(r, 2);
console.log(Math.round(circleSquare));

Вывод в консоли (во всплывающем окне prompt введена цифра 4):

25
50

Я не понимаю, почему первый код не работает так, как второй. Ведь методы использованы одинаковые. Прошу помочь с выяснением причин. Заранее спасибо!


Ответы (1 шт):

Автор решения: Алексей Шиманский

В первом коде вы не передаёте ничего на вход в функции. При этом там стоит переменная, которая должна быть каким-то значением. Если оно не передано, то оно по-умолчанию undefined. Дальше в математических операциях с undefined получается NAN.

Вот если бы там не было ожидание параметра (то есть было function circleLength() и function circleSquare()), то значение взялось из r верхнего скоупа.

→ Ссылка