在javascript中更改函数内调用的函数
我有不同的函数运行非常简单的数学方程。我想要一个函数,它能够基于单独设置的变量调用这些函数中的任何一个。我似乎无法让函数将变量识别为“函数”输入 在console中运行时,这会给我预期的结果:在javascript中更改函数内调用的函数,javascript,Javascript,我有不同的函数运行非常简单的数学方程。我想要一个函数,它能够基于单独设置的变量调用这些函数中的任何一个。我似乎无法让函数将变量识别为“函数”输入 在console中运行时,这会给我预期的结果: function operate(whatOp, a, b){ console.log(whatOp(a, b)} 所以打字 operate(divide, 3, 4) …在控制台中返回0.75 然而,如果我试图通过让whatOp来自一个变量来调用它,它不会像 let firstNumber =
function operate(whatOp, a, b){
console.log(whatOp(a, b)}
所以打字
operate(divide, 3, 4)
…在控制台中返回0.75
然而,如果我试图通过让whatOp来自一个变量来调用它,它不会像
let firstNumber = "999";
let secondNumber = "333";
let operation = "divide";;
…在控制台中返回未定义的
基于此,我如何让它工作?我正在使用一个按钮设置变量,但它起作用并返回我想要的值,因此我认为这与我调用变量的方式有关?我必须做类似的事情,我可以通过编写一个简单的switch语句来完成:
function yourFunction(operation, a, b) {
switch (operation) {
case 'sum':
sum(a, b);
break;
}
}
希望能有所帮助……我也做了类似的事情,我可以通过编写一个简单的switch语句来实现:
function yourFunction(operation, a, b) {
switch (operation) {
case 'sum':
sum(a, b);
break;
}
}
希望对您有所帮助……您可以执行以下操作:
function add(a, b) {
return a + b;
}
function rest(a, b) {
return a - b;
}
function divide(a, b) {
return a / b;
}
function operate(whatOp, a, b){
const operations = {
add,
rest,
divide
};
return operations[whatOp](a, b);
}
功能添加(a、b){
返回a+b;
}
功能休息(a,b){
返回a-b;
}
功能划分(a、b){
返回a/b;
}
功能操作(whatOp、a、b){
常量运算={
添加
休息
分
};
返回操作[whatOp](a、b);
}
控制台日志(操作('add',1,2));
控制台日志(操作('rest',2,1));
控制台日志(操作('divide',4,2))代码>您可以执行以下操作:
function add(a, b) {
return a + b;
}
function rest(a, b) {
return a - b;
}
function divide(a, b) {
return a / b;
}
function operate(whatOp, a, b){
const operations = {
add,
rest,
divide
};
return operations[whatOp](a, b);
}
功能添加(a、b){
返回a+b;
}
功能休息(a,b){
返回a-b;
}
功能划分(a、b){
返回a/b;
}
功能操作(whatOp、a、b){
常量运算={
添加
休息
分
};
返回操作[whatOp](a、b);
}
控制台日志(操作('add',1,2));
控制台日志(操作('rest',2,1));
控制台日志(操作('divide',4,2))代码>有朝一日,编程语言将变得如此智能,以至于你只需说“除法”,它们就会把两个数字除法。这一天还没有到来,所以你必须指定“除法”的含义。您可以通过定义一个函数来实现:
功能操作(whatOp,a,b){
控制台日志(whatOp(a,b));
}
让firstNumber=“999”;
让secondNumber=“333”;
让操作=函数除法(第一个参数,第二个参数){
return firstArgument/secondArgument;//在这里指定“divide”是什么
}
操作(操作、第一个编号、第二个编号)代码>有朝一日,编程语言将变得如此智能,以至于你只需说“除法”,它们就会把两个数字除法。这一天还没有到来,所以你必须指定“除法”的含义。您可以通过定义一个函数来实现:
功能操作(whatOp,a,b){
控制台日志(whatOp(a,b));
}
让firstNumber=“999”;
让secondNumber=“333”;
让操作=函数除法(第一个参数,第二个参数){
return firstArgument/secondArgument;//在这里指定“divide”是什么
}
操作(操作、第一个编号、第二个编号)代码>您应该检查需要执行的操作是否存在于全局空间中。
我通常做的是:
if (window[operation])
{
operate(window[operation], firstNumber, secondNumber);
}
else
{
console.error("Operation", operation, "not yet implemented !");
}
希望有帮助。您应该检查全局空间中是否存在需要执行的操作。
我通常做的是:
if (window[operation])
{
operate(window[operation], firstNumber, secondNumber);
}
else
{
console.error("Operation", operation, "not yet implemented !");
}
希望有帮助。操作
应该是一个函数
,它接受两个参数,而不是字符串
。只需执行让操作=除法
。在您的工作示例中,您正在传递divide
,而不是“divide”
,假设divide
在例如窗口范围内,那么operation(窗口[操作]、firstNumber、secondNumber)
将起作用。@VLAZ在我的实际代码中,我是根据我单击的按钮(例如称为divide)的ID给它一个值,我如何确保我传递的不是字符串,而是简单的divide
操作应该是一个函数
,它接受两个参数,而不是字符串
。只需执行让操作=divide
。在您的工作示例中,您正在传递divide
,而不是“divide”
,假设divide
在例如窗口范围内,那么operation(窗口[操作]、firstNumber、secondNumber)
将起作用。@VLAZ在我的实际代码中,我是根据我单击的按钮(例如称为divide)的ID给它一个值,如何确保我传递的不是字符串,而是简单的divide