首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结束生活总是需要的吗?

结束生活总是需要的吗?
EN

Stack Overflow用户
提问于 2019-05-17 10:39:46
回答 1查看 51关注 0票数 1

函数中的任何函数都形成闭包。闭包总是需要在一个立即调用的函数中吗?

第一个例子是在生命周期内形成闭包,并按预期工作,输出"8“和"7”。

代码语言:javascript
复制
var cat = (function (){
  var lives = 9;
  return function() {
    return --lives;
  }
}());
console.log("iife");
console.log(cat());
console.log(cat());

在下面的示例中,闭包不像预期的那样工作,每次打印相同的值。

代码语言:javascript
复制
var cat = function (){
  var lives = 9;
  return function() {
    return --lives;
  }
};

console.log("no iife");
console.log(cat()());
console.log(cat()());

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-17 10:41:00

闭包只是函数与其创建作用域之间的链接,当函数使用来自该作用域的变量时,该链接就存在。

您有这个问题,因为您没有保留闭包:在调用console.log时,您将在每个cat()上重新创建它。

变化

代码语言:javascript
复制
console.log(cat()());
console.log(cat()());

转到

代码语言:javascript
复制
let c = cat();
console.log(c());
console.log(c());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56184749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档