setTimeout 立即执行,而不是在函数调用中传递时间

setTimeout executes immediately instead of time passed in the function call

我有这段代码来测试 setTimeout 函数。 console.log 在执行代码后立即被记录。知道为什么这个函数在 5 秒后没有被调用吗?这段代码有什么问题?

function formatName(fname,lname){
  let fullName = fname+lname;
  console.log(fullName);
 }
setTimeout(formatName('Jon','Harris'),5000);

EDIT:
I didn't know about the way I need to call setTimeout.

setTimeout() 的第一个参数是函数,但在您的代码中,您正在执行该函数。使用箭头函数将其作为函数。

function formatName(fname,lname){
  let fullName = fname+lname;
  console.log(fullName);
 }
setTimeout(() => formatName('Jon','Harris'),5000);

您可以按以下格式传递参数:

setTimeout(formatName, 5000, fname, lname);

function formatName(fname, lname){
  let fullName = fname + ' ' + lname;
  console.log(fullName);
}
 
setTimeout(formatName, 5000, 'Jon', 'Harris');