Код
г-но неидеален, и вот, почему:
см. комменты в кодеlet a = prompt("Enter a value", 10); // a, b, c дальше не меняются
let b = prompt("Enter b value", 10); // поэтому можно
let c = prompt("Enter c value", 10); // const
let result;
let discr = (b * b ) - 4 * a * c;
let sqrtDiscr = Math.sqrt(discr); // при отрицат. discr здесь NaN
if(a === 0 && b === 0 && c === 0) { // проверяем уже после вычислений
throw new Error("The values must be bigger than 0");
} else if(discr < 0 ){ // проверяем уже после вычисления sqrtDiscr
throw new Error("This Equation have not solution");
} else if(discr === 0 ){
console.log("This Equation have only 1 solution")
result = (-b) / (2 * a);
} else if (discr > 0){
console.log("This Equation have 2 solution");
result = (- b + sqrtDiscr) / (2 * a) + "; " + (- b - sqrtDiscr) / (2 * a);
}
console.log(result);
По функциям разбивать есть смысл если из нескольких мест идёт обращение, код повторяется более двух раз. Тут можно в двух последних случаях считать два корня одной формулой, и при нулевом дискриминанте брать только одно из двух равных значений. Но это излишняя, дурная, вредная переоптимизация.
Ещё вы не проверили случай, когда
a === 0
: у вас будет деление на ноль.