gpt4 book ai didi

javascript - 这真的被认为是 JavaScript 闭包吗?

转载 作者:行者123 更新时间:2023-12-01 00:34:19 25 4
gpt4 key购买 nike

我最近面试了一位入门级 Web 开发人员职位的候选人,并提出了这个问题:您可能会在 Javascript 中调用以下代码行:

let foo = function() {}

这个问题故意含糊其辞,因为简历很薄弱,我想了解候选人如何回答问题的所有可能答案。过了一会儿, react 基本上是“我不知道,正确答案是什么?”

我解释了有几个答案:变量声明、函数赋值、提升缓解、ES6等等。然后我说它也可以被认为是闭包。对此,候选人回答说:“我不认为这是一个闭包。闭包是函数中的函数。”

这是我第一次让候选人质疑我对他们不知道答案的问题的回答,这让我想知道是否可以将结束语归结为简单的一行。我这样说有错吗?

编辑:仅供本人学习,与应聘者无关。事实上,我们提出了报价,他们接受了。他们下周开始:)

最佳答案

我认为我们可以同意,一个函数不必在另一个函数内部定义才能成为闭包。我可能会跟进并询问他们为什么认为这是闭包的要求,然后将对话引向一般范围。

人们可能对闭包的真正构成有不同的看法,但我喜欢Wikipedia中的描述。 (以前有点广泛)每当我教 JavaScript 时我就一直在使用它:

Operationally, a closure is a record storing a function together with an environment.

我喜欢它,因为它是一个非常容易理解的描述,并且它很容易应用于 JavaScript 函数,因为这正是规范中描述的它的工作方式。规范甚至uses the term closure to refer to a created function ,无论函数的实际内容如何。

按照这个想法,JavaScript 中的每个函数都是一个闭包,所以你是对的。

话虽如此,我可以看到有人提出这个函数不用作闭包的论点,因为它不访问任何自由变量。

<小时/>

我还必须补充一点,当我查看这段代码时,我首先想到的并不是“闭包”。命名存在的东西和不存在的东西更容易(指的是函数不被用作闭包)。

我首先想到的是函数表达式

关于javascript - 这真的被认为是 JavaScript 闭包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58262667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com