高阶函数Javascript

问题描述 投票:1回答:3

我是Java语言的新手,对高阶函数的概念进行了严格的研究,并将函数用作参数。

我从网上获得了两个代码示例,但我不知道会发生什么。

[第一个,输出将为0,并且我无法打印t1和t2的时间(我尝试了console.log(t1),但它变成了参考错误)。我不知道为什么它变成0。另外,虽然我知道funcparameter()是回调函数,也就是ad​​dOneToOne(),但是我不知道函数体内的funcParameter()如何为该函数工作。

第二个,输出将是3。但是即使我没有将参数放入addTwo(),它怎么也可以是3?如果我没有在参数中添加任何内容,num会自动为0还是未定义?

很抱歉,我有很多问题,如果您能帮助我,我非常感谢。

//1st code
const timeFuncRuntime = funcParameter => {
   let t1 = Date.now();//
   funcParameter();
   let t2 = Date.now();//
   return t2 - t1;
}

const addOneToOne = () => 1 + 1;

timeFuncRuntime(addOneToOne);

console.log(timeFuncRuntime(addOneToOne))//0


//2nd code

  const addTwo = num => num + 2;


  const checkConsistentOutput = (func,   val) => {
    let firsttry = func(val);
    let secondtry = func(val);
    if(firsttry === secondtry){
      return firsttry;
    } else {
      return 'This function returned    inconsistent results';
    }
  };

  checkConsistentOutput(addTwo,1)

  console.log(checkConsistentOutput(addTwo,1))//3

我是Java语言的新手,对高阶函数的概念进行了严格的研究,并将函数用作参数。我从网上获得了两个代码示例,但我不明白该怎么办...

javascript higher-order-functions
3个回答
1
投票

1:t1变量的范围仅限于功能块。您可以阅读有关变量作用域here


0
投票

第二个,输出将是3。但是即使我没有将参数放入addTwo(),它怎么也可以是3?


0
投票

[第一个,输出将为0,并且我无法打印t1和t2的时间(我尝试了console.log(t1),但它变成了参考错误)。我不知道为什么它变成0。

© www.soinside.com 2019 - 2024. All rights reserved.