Можно ли передать в функцию любой метод класса Math?

Делаю калькулятор на js Есть функции sin cos tg калькулятора, которые отличаются только методом класса Math, например, sin

function sin (){

var firstValue = document.getElementById("firstNumber").value;
var secondValue = document.getElementById("secondNumber").value;

var output =0;

if (firstValue == 0 && secondValue !=0) output = Math.sin(secondValue);
else if (secondValue == 0 && firstValue !=0) output = Math.sin(firstValue);

else if (firstValue ==0 && secondValue ==0) output =Math.sin(0);

else alert("Заполните только одно поле!");

document.getElementById("result").value = output; 
}

Такой же код для cos и tg, только с Math.cos() и Math.tan(). В связи с этим возник вопрос:

Как можно проверить на какую кнопку нажали и в зависимости от этого передать в общую функцию нужную операцию?


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

Автор решения: IvaMuxa

Можно вот так

function calc(e) {
  console.log(e.value);
  var firstValue = document.getElementById("firstNumber").value;
  var secondValue = document.getElementById("secondNumber").value;

  var output = 0;
  var useFunc = function(){};
  switch (e.value) {
    case "sin": useFunc = Math.sin; break;
    case "cos": useFunc =  Math.cos; break;
  }
    if (firstValue == 0 && secondValue != 0) output = useFunc(secondValue);
    else if (secondValue == 0 && firstValue != 0) output = useFunc(firstValue);
    else if (firstValue == 0 && secondValue == 0) output = useFunc(0);
    else alert("Заполните только одно поле!");

  document.getElementById("result").innerText = output;
}
<input id="firstNumber" />
<input id="secondNumber" />
<button value="sin" onclick="calc(this)">sin</button>
<button value="cos" onclick="calc(this)">cos</button>
<div id="result"></div>

→ Ссылка