京东云服务器推荐配置、多种配置选择,满足不同业务需求!

热门推荐

⭐ 稳定入门选择

配置:2核2G/5M

适用场景:个人站点 / 轻量应用

特点:性价比高,稳定可靠

¥19/月
立即购买
流量友好

☁️ 轻量云主机

配置:2核4G 5M

适用场景:小型业务 / 博客 / 测试环境

特点:流量友好,性能均衡

¥149/年
立即购买
高性能

💻 云服务主机

配置:4核16G 8M

适用场景:中小型服务 / 多并发场景

特点:充足内存与带宽,性能强劲

¥750/年
立即购买
新人专享

🎁 新人福利

新人访问 → 点击 → 最新活动

可获取 3000元 礼券

立即领取
JavaScript / JavaScript 教程 / JavaScript 函数
JavaScript 闭包
JS HTML DOM(文档对象模型)JavaScript 函数应用

JavaScript 闭包

JavaScript变量可以属于本地作用域或全局作用域。

可以使用闭包将全局变量设为局部(私有)。

为什么我们需要闭包?

假设我们要使用一个变量来计数某物,并且希望该计数器可用于所有函数。

我们可以使用一个全局变量和一个增加计数器的函数:

// 初始化计数器
var counter = 0;

// 递增计数器函数
function increment() {
  counter++;
}

// 调用increment() 3次
increment();
increment();
increment();

// 现在该计数器应为3
document.getElementById("output").innerHTML = `计数器: ${counter}`;
测试看看‹/›

上面的解决方案存在一个问题:页面上的任何代码都可以更改计数器,而无需调用increment()。

JavaScript内部函数可以解决此问题。

JavaScript 嵌套函数

JavaScript支持嵌套函数。嵌套函数可以访问其上方的范围。

在此示例中,内部函数可以访问外部函数中的计数器变量:

function outer() {
  var counter = 0;
  function inner() {
      counter++;
  }
  return counter; 
}
测试看看‹/›

嵌套函数可以解决前面的问题,如果我们可以从外部访问inner()函数。

我们还需要找到只执行一次counter = 0的方法,那就是下面讲到的闭包。

JavaScript 闭包

闭包是函数和声明该函数的词法环境的组合。

闭包可以从另一个函数的作用域访问变量。这是通过在函数内部创建函数来实现的。当然,外部函数无法访问内部作用域。

var increment = (function() {
  var counter = 0;
  function inner() {
      return ++counter;
  }
  return inner;
})();
测试看看‹/›

为变量增量分配了自执行函数的返回值。

自执行功能仅运行一次。它将计数器设置为零,并返回函数表达式。

闭包是即使父函数已关闭,也可以访问父作用域的函数。

JS HTML DOM(文档对象模型)JavaScript 函数应用
下一篇:无