Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中更改函数内调用的函数_Javascript - Fatal编程技术网

在javascript中更改函数内调用的函数

在javascript中更改函数内调用的函数,javascript,Javascript,我有不同的函数运行非常简单的数学方程。我想要一个函数,它能够基于单独设置的变量调用这些函数中的任何一个。我似乎无法让函数将变量识别为“函数”输入 在console中运行时,这会给我预期的结果: function operate(whatOp, a, b){ console.log(whatOp(a, b)} 所以打字 operate(divide, 3, 4) …在控制台中返回0.75 然而,如果我试图通过让whatOp来自一个变量来调用它,它不会像 let firstNumber =

我有不同的函数运行非常简单的数学方程。我想要一个函数,它能够基于单独设置的变量调用这些函数中的任何一个。我似乎无法让函数将变量识别为“函数”输入

在console中运行时,这会给我预期的结果:

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