函数调用后的 Console.log() 立即返回函数本身

Pat*_*cco 0 javascript

我对 JS 相当陌生,在练习时偶然发现了以下内容,我想知道为什么会发生这种情况。我实际上认为我明白为什么;但是,我觉得这不是很直接。

我有这个对象,我想用所有者的名字生成一个用户名。

const account1 = {
  owner: 'Pat Racco',
  movements: [200, 450, -400, 3000, -650, -130, 70, 1300],
  interestRate: 1.2, // %
  pin: 1111,
};
Run Code Online (Sandbox Code Playgroud)

这是我的尝试:

const createUsername = function (owner) {
  const username = owner
    .toLowerCase()
    .split(' ')
    .map(v => v[0])
    .join('');
  return username;
};
Run Code Online (Sandbox Code Playgroud)

现在,为什么如果我这样做:

createUsername(account1.owner);
console.log(createUsername);
Run Code Online (Sandbox Code Playgroud)

结果是函数本身;但如果我这样做:

    console.log(createUsername(account1.owner));
// "pr"
Run Code Online (Sandbox Code Playgroud)

为什么它按预期工作?

Dan*_*iel 6

因为createUsername是方法(函数)所以它返回一个函数,而createUsername(account1.owner)执行函数(因为括号),所以console.log显示函数的返回值。

你也可以这样做

var result = createUsername(account1.owner);
console.log(result);
Run Code Online (Sandbox Code Playgroud)

它将执行函数,将其分配给resultresult在控制台中输出值。