对于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 name
inside内displayname
,以便displayname
返回某些内容。但是,然后您希望的调用者init
接收该值,所以init
也必须return
使用return displayname()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句