西西1216 2019-08-31 11:34 采纳率: 100%
浏览 342
已采纳

JS函数内部声明有函数时,不同调用方式的差异?

有点不理解下面两种不同调用方式为什么返回结果会有这样的差异?希望有人能帮忙解答一下,万分感谢。

function foo() {
  var x = 1;
  function bar() {
    console.log(x);
  }
  return bar;
}

var x = 2;
var f = foo();
f(); 
// 上面这种调用方式 返回的是 1


function foo() {
  var x = 1;
  function bar() {
    console.log(x);
  }
  return bar;
}

var x = 2;
foo();

// 这种方式返回的却是 function bar()。
  • 写回答

2条回答 默认 最新

  • 天际的海浪 2019-08-31 13:42
    关注

    js中函数本身也是一个对象,是可以传递的。
    foo()只是返回bar这个函数对象,并不调用执行bar函数。

    要调用执行bar函数除了你第一种方法,还可以
    foo()();

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 帮看看这个为何无法运行
  • ¥15 hbuildex运行微信小程序报错
  • ¥50 HAL ADCDMA单次触发转换
  • ¥15 关于#python#的问题:我知道这个问题对你们来说肯定so easy
  • ¥15 wpf datagrid如何实现多层表头
  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步