我是Java语言的新手,对高阶函数的概念进行了严格的研究,并将函数用作参数。
我从网上获得了两个代码示例,但我不知道会发生什么。
[第一个,输出将为0,并且我无法打印t1和t2的时间(我尝试了console.log(t1),但它变成了参考错误)。我不知道为什么它变成0。另外,虽然我知道funcparameter()是回调函数,也就是addOneToOne(),但是我不知道函数体内的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语言的新手,对高阶函数的概念进行了严格的研究,并将函数用作参数。我从网上获得了两个代码示例,但我不明白该怎么办...
1:t1
变量的范围仅限于功能块。您可以阅读有关变量作用域here
第二个,输出将是3。但是即使我没有将参数放入addTwo(),它怎么也可以是3?
[第一个,输出将为0,并且我无法打印t1和t2的时间(我尝试了console.log(t1),但它变成了参考错误)。我不知道为什么它变成0。