为什么此闭包也需要在外部函数上返回?

雪猫

对于Java语言中的Closures,我有下面的代码,非常简单,但是我试图理解Closures的复杂性,下面的代码无法按我认为的方式工作。我正在使用Node.js终端窗口(而不是console.log的浏览器)。

function init() {
  let name = 'rumbo'; // i created a simple variable inside the parent function (i get this)

  function displayname() {
    return (name); //inner function with a **return** of the variable above (i get this also)
  }
  displayname(); //* see note below
}

console.log(init()); //as per my thought, this should console log 'rumbo' but it does not.

*这吐出“未定义”。(我明白这一点;当您不具体声明外部函数或在外部函数上使用return / or console.log时,将得到未定义。但是,在这种情况下,displayname()函数在外部函数的末尾调用,应该从内部函数的返回值中返回“名称”,但不是。

所以这就是我的问题,为什么在调用外部函数时返回结果(在本例中为“ rumbo”)。

一定的表现

init不返回任何内容,因此console.log(init())只会记录undefined

return从当前正在执行的函数返回值-它不会return所有当前执行的功能,所有的方式调用堆栈。(毕竟,这将非常混乱并且几乎无法使用。)因此,您必须在return nameinside内displayname,以便displayname返回某些内容。但是,然后您希望的调用者init接收该值,所以init也必须return使用return displayname()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在内部闭包中需要mut,但在外部函数的参数中却不需要mut?

为什么要在javascript闭包中打印此值?

为什么需要在转换构造函数上引用this->?

我从闭包返回的函数在外部范围中可用吗?

为什么我需要在所有传递闭包中使用ConfigureAwait(false)?

为什么在外部分配时,闭包中的本地分配变量工作方式不同?

为什么要在代码中考虑使用JavaScript闭包?

为什么我不能从闭包中返回对外部变量的可变引用?

为什么要在Observable函数上调用.call()?

为什么要在构造函数上使用constexpr?

为什么要在 Go 中的函数上实现接口?

为什么从闭包调用外部函数时窗口不起作用?

为什么我们需要闭包内的函数/方法使用weakSelf?

从函数返回闭包

为什么此代码的行为类似于闭包?

JavaScript-为什么此闭包不保存参数?

为什么不通过闭包定义此变量?

如何理解此高阶函数闭包发生了什么

(function($) { ..})(jQuery); 在此包装器/闭包中定义的函数不能在外部调用

为什么需要在对象中的函数中的if语句中的“ this”内部而不是外部?的JavaScript

为什么在此F#函数上需要括号?

为什么我们需要在React Hook中返回一个函数?

为什么需要在angularjs中创建一个函数以返回加和数?

JavaScript闭包-帮助我理解为什么内部函数的返回值不返回

Javascript-为什么用IIFE返回闭包?

为什么我不能从闭包中返回引用?

有什么办法从闭包内部从函数返回吗?

从案例类外部查询时,为什么getClass在案例类构造函数参数上返回不同的值?

为什么python嵌套函数不称为闭包?