gpt4 book ai didi

javascript - 在函数中调用带参数的 JavaScript 函数

转载 作者:行者123 更新时间:2023-11-29 21:34:20 25 4
gpt4 key购买 nike

今天看到下面的代码:

log_execution_time = require('./utils').log_execution_time;
var fib = function fib(n) {
if (n < 2) return n;
return fib(n - 1) + fib(n - 2);
};

var timed_fib = log_execution_time(fib);
timed_fib(5);

>>> Execution time: 1.166ms

我对函数 log_execution_time 很好奇。不知道怎么样。

可以看到log_execution_time的输入是一个函数。它如何调用带参数的函数?但是来自 w3school 的所有方法调用函数时需要参数。我假设:

var log_execution_time = function (input_function){
console.time("Execution time");
// input_function
console.timeEnd("Execution time");
}

感谢和问候

最佳答案

I think the OP is specifically about how the 5 parameter gets passed to the function input_function

函数是 JavaScript 中的一流对象。您可以像任何其他对象一样设置标识符并传递它们的引用。

  1. log_execution_time(fib); 不调用 fib,它将对 fib 的引用作为第一个参数传递给 log_execution_time 函数。这意味着内部可以引用 fib
  2. timed_fib 是一个函数,它可以引用 log_execution_time 调用的闭包,因为它是在时间 创建的,因此它可以调用根据需要引用 fib

这是一个简单的例子;

function log(msg) {
console.log(msg);
}

function wrap(fn) {
return function () { // some anonymous function to be our wrapper
console.log('Wrapped:');
fn.apply(this, arguments); // this line invokes `fn` with whatever arguments
// that were passed into the anonymous function
};
}

var foo = wrap(log);
foo('Hello World'); // logs
// Wrapped:
// Hello World

我们也可以使用更常用的方式来调用 fn,例如 fn("fizz buzz");,而不是 .apply 但这意味着我们需要更多地了解如何调用 fn,这可能是任何东西


有用的东西:

关于javascript - 在函数中调用带参数的 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35275331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com