Javascript 我能把四个函数合并成一个吗?
我不确定我的措辞是否正确,但基本上我已经写出了4个函数,我必须构建一个计算器,每个函数用于除法、加法、乘法和减法。有没有办法将所有这些“命令”添加到一个函数中,而不是四个单独的函数 多谢各位Javascript 我能把四个函数合并成一个吗?,javascript,add,calculator,subtraction,Javascript,Add,Calculator,Subtraction,我不确定我的措辞是否正确,但基本上我已经写出了4个函数,我必须构建一个计算器,每个函数用于除法、加法、乘法和减法。有没有办法将所有这些“命令”添加到一个函数中,而不是四个单独的函数 多谢各位 function add (num1, num2){ var intOutput= parseInt(num1)+parseInt(num2); document.getElementById("output").innerHTML=intOutput; } function subtra
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;
}
听起来您需要一个通用函数,它将有条件地执行请求的操作。像这样的方法应该会奏效:
function calculate(num1, num2, action)
{
if (action == 'add') {
//...
} else if (action == 'subtract') {
//...
} else if (action == 'multiply') {
//...
} else if (action == 'divide') {
//...
}
}
编辑:为了可读性和长期可维护性,您可能仍然希望将实际操作保留在单独的函数中,只需从各个if分支调用它们。您可以重构所有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);
既然这听起来像家庭作业,我就给你一个家庭作业式的答案 你知道你可以从任何地方调用一个函数,包括另一个函数,所以完全有可能创建一个函数来控制它们 例如:
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功能
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')
您可以使用函数变量抽象出常见行为:
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; });
}
...
如果为执行的操作添加另一个参数,则应该能够执行此操作。也许每个操作都需要一个开关
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
}
你可以,但你为什么要?这是家庭作业吗?你指的是在一个函数中添加if语句,而不是将它们分开吗?尝试找到一种更简单的方法,因为我计划向javascript文件添加更多内容,并希望尽可能缩短所有内容。为什么不使用javascript中已有的数学函数呢?哦,谢谢@Anon,我会尝试!完美的非常感谢。我要试一试。
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
}