В коде есть несколько ошибок:
- Вы должны использовать
else-if
вместо if
во втором блоке. - Вы должны проверить
pow
вместоx
- Вы не используете
var
или let
с i
, поэтому он станет глобальной переменной.Используйте let
или var
- Вы снова используете
var
внутри своих блоков if
, но переменные, объявленные с var
, имеют область действия функции, поэтому она не будет выдавать ошибку.Но с let
это сломает ваш код.Не пересматривайте result
снова и снова.
function powX(x, pow) {
x = +prompt('Insert a number: ');
pow = +prompt('Insert a power: ');
var result;
if (pow > 0) {
result = x;
for (let i = 1; i < pow; i++) {
result *= x;
}
}
else if (pow < 0) {
result = x;
for (let i = 0; i <= Math.abs(pow); i++) {
result /= x;
}
} else {
result = 1;
}
return result;
}
console.log(powX());
Вам не нужны две петли, одна для деления, а другая для умножения.Просто вычислите result
просто умножив и в конце умножьте результат на x
или разделите его на основе условия.
function powX(x, pow) {
x = +prompt('Insert a number: ');
pow = +prompt('Insert a power: ');
if(pow === 0) return 1;
var result = x;
for (let i = 1; i < Math.abs(pow); i++) {
result *= x;
}
return pow < 0 ? (x/result/x) : result;
}
console.log(powX());