我不确定我是否正确写了这个,但基本上我写了4个函数(我必须建立一个计算器),每个函数用于分割,加法,乘法和减法。有没有什么方法可以将所有这些'命令'添加到一个函数中而不是有四个单独的函数?
谢谢。
function add (num1, num2){
var intOutput= parseInt(num1)+parseInt(num2);
document.getElementById("output").innerHTML=intOutput;
}
function subtract (num1, num2){
var intOutput= parseInt(num1)-parseInt(num2);
document.getElementById("output").innerHTML=intOutput;
}
function multiply (num1, num2){
var intOutput= parseInt(num1)*parseInt(num2);
document.getElementById("output").innerHTML=intOutput;
}
function divide (num1, num2){
var intOutput= parseInt(num1)/parseInt(num2);
document.getElementById("output").innerHTML=intOutput;
}
答案 0 :(得分:6)
听起来你想要一个有条件地执行请求动作的通用功能。这样的事情应该有效:
function calculate(num1, num2, action)
{
if (action == 'add') {
//...
} else if (action == 'subtract') {
//...
} else if (action == 'multiply') {
//...
} else if (action == 'divide') {
//...
}
}
编辑:为了便于阅读和长期维护,您可能仍希望将实际操作保留在单独的函数中,并简单地从各个if
分支中调用它们。
答案 1 :(得分:1)
您可以重构所有DOM代码:
function proc(op, num1, num2) {
document.getElementById("output").innerHTML = op(parseInt(num1), parseInt(num2));
}
然后使用这些简单的助手:
var addOp = function (a, b) { return a + b; };
var subOp = function (a, b) { return a - b; };
var multOp = function (a, b) { return a * b; };
var divOp = function (a, b) { return a / b; };
你可以做任何你想要的操作:
proc(addOp, num1, num2);
proc(subOp , num1, num2);
proc(multOp , num1, num2);
proc(divOp , num1, num2);
答案 2 :(得分:1)
function calculate(type, num1, num2) {
var _in = parseInt(num1, 10),
_out = parseInt(num2, 20),
output = 0;
switch(type) {
case 'add':
output = _in + _out;
break;
case 'subtract':
output = _in - _out;
break;
case 'multiply':
output = _in * _out;
break;
case 'divide':
output = _in / _out;
break;
}
document.getElementById("output").innerHTML = output;
}
用作
calculate('add', 10, 20); // 30
calculate('multiply', 10, 20); // 200
// etc...
如果你确定字符串只是一个数字,一个操作符和一个数字,你可以使用eval来获得一些乐趣(尽管eval是邪恶的)
function calculate(str) {
if (/\d+(\*|\-|\+|\/)\d+/.test(str))
document.getElementById("output").innerHTML = eval(str);
}
然后你可以做
calculate('20*10')
calculate('20+100')
calculate('1000/100')
答案 3 :(得分:1)
您可以使用函数变量抽象出常见行为:
function calculateAndDisplay(num1, num2, operation) {
var intOutput= operation(num1, num2);
document.getElementById("output").innerHTML=intOutput;
}
function add(num1, num2) {
calculateAndDisplay(num1, num2, function(a, b) { return a + b; });
}
...
答案 4 :(得分:0)
由于这听起来像是家庭作业,我会给你一个功课答案。
你知道你可以从任何地方调用一个函数,包括另一个函数,所以它完全可以创建一个函数来统治它们。"
例如:
function helloJohn() {
console.log('Hello John');
}
function helloJane() {
console.log('Hello Jane');
}
function hello(name) {
if (name === 'John') {
helloJohn();
} else if (name === 'Jane') {
helloJane();
}
}
我可以轻松更改hello
功能,以包含helloJohn
和helloJane
功能。
答案 5 :(得分:0)
如果为执行的操作添加其他参数,则应该能够执行此操作。也许是开关来做每个操作。
function operate(n1,n2,op){
var output;
switch(op){
case 'add':
output = n1+n2;
break;
case 'sub':
output= n1-n2;
break;
case 'div':
output = n1/n2;
break;
case 'mul':
output = n1*n2;
}
document.getElementById('output').innerHtml = output
}
答案 6 :(得分:-1)
var Calculator = {
add: function (num1, num2) {
var intOutput= parseInt(num1)+parseInt(num2);
document.getElementById("output").innerHTML=intOutput;
},
subtract: function (num1, num2) {
var intOutput= parseInt(num1)-parseInt(num2);
document.getElementById("output").innerHTML=intOutput;
},
multiply: function (num1, num2) {
var intOutput= parseInt(num1)*parseInt(num2);
document.getElementById("output").innerHTML=intOutput;
},
divide: function (num1, num2) {
var intOutput= parseInt(num1)/parseInt(num2);
document.getElementById("output").innerHTML=intOutput;
}
};
Calculator.add(4, 5);
Calculator.divide(20, 10);