当前位置: 首页 > wzjs >正文

昆明市建设厅网站网页设计与制作就业前景

昆明市建设厅网站,网页设计与制作就业前景,兼职做网站 深圳,淄博什么兼职的网站建设javascript闭包在实际项目中有哪些应用场景?请举例说明。 闭包在 JavaScript 里就像是一个神奇的“小口袋”,它能让函数记住并访问其外部函数的变量,哪怕外部函数已经执行完了。下面用大白话详细介绍闭包在实际项目中的应用场景,…

javascript闭包在实际项目中有哪些应用场景?请举例说明。

闭包在 JavaScript 里就像是一个神奇的“小口袋”,它能让函数记住并访问其外部函数的变量,哪怕外部函数已经执行完了。下面用大白话详细介绍闭包在实际项目中的应用场景,并给出具体例子。

1. 实现私有变量和方法

在实际开发中,有时候我们希望某些变量和方法只能在特定的范围内被访问和修改,就像家里的一些贵重物品,只能家里人碰。闭包就能帮我们实现这种“私有”的效果。

举例

function createCounter() {// 这个 count 变量就是“私有变量”let count = 0;return {// 这是一个“公有方法”,可以访问和修改 countincrement: function() {count++;console.log(count);},// 这也是一个“公有方法”,可以访问 countgetCount: function() {return count;}};
}// 创建一个计数器实例
let counter = createCounter();
// 调用 increment 方法,count 会增加
counter.increment(); 
// 调用 getCount 方法,获取当前的 count 值
console.log(counter.getCount()); 

在这个例子里,count 变量被封装在 createCounter 函数内部,外部无法直接访问它。但是通过返回的 incrementgetCount 方法,我们可以对 count 进行操作和获取,这就实现了变量的私有性。

2. 事件处理和回调函数

在网页开发中,经常会遇到事件处理和回调函数的情况。闭包可以让这些函数记住一些特定的状态信息,就像给它们带上一个“小纸条”,上面写着重要信息。

举例

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8">
</head><body><button id="btn1">按钮 1</button><button id="btn2">按钮 2</button><script>function createButtonHandler(message) {return function() {// 这个闭包记住了 message 变量alert(message);};}// 获取按钮元素let btn1 = document.getElementById('btn1');let btn2 = document.getElementById('btn2');// 为按钮添加点击事件处理函数btn1.onclick = createButtonHandler('你点击了按钮 1');btn2.onclick = createButtonHandler('你点击了按钮 2');</script>
</body></html>

这里的 createButtonHandler 函数返回了一个闭包,这个闭包记住了传入的 message 变量。当按钮被点击时,对应的闭包函数会执行,弹出相应的消息框,说明闭包记住了不同按钮对应的消息。

3. 函数柯里化

函数柯里化就是把一个多参数函数转换为一系列单参数函数。闭包在这个过程中起到了关键作用,它可以记住之前传入的参数。

举例

function add(a, b) {return a + b;
}// 实现柯里化函数
function curryAdd(a) {return function(b) {// 这个闭包记住了 a 变量return a + b;};
}// 使用柯里化函数
let add5 = curryAdd(5);
console.log(add5(3)); 

在这个例子中,curryAdd 函数返回了一个闭包,这个闭包记住了传入的 a 参数。当我们调用 add5(3) 时,闭包函数会使用之前记住的 a 值(这里是 5)和新传入的 b 值(这里是 3)进行计算。

4. 循环中的事件绑定

在循环里给多个元素绑定事件时,闭包可以确保每个元素的事件处理函数能正确处理自己的状态。

举例

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8">
</head><body><ul><li>列表项 1</li><li>列表项 2</li><li>列表项 3</li></ul><script>let listItems = document.getElementsByTagName('li');for (let i = 0; i < listItems.length; i++) {(function(index) {listItems[index].onclick = function() {// 这个闭包记住了 index 变量alert('你点击了第 ' + (index + 1) + ' 个列表项');};})(i);}</script>
</body></html>

这里使用了一个立即执行函数创建了闭包,闭包记住了每次循环的 index 值。当点击列表项时,对应的闭包函数会弹出正确的提示信息,说明闭包正确处理了每个列表项的状态。


文章转载自:

http://hZfyB2oU.jtwck.cn
http://Iyszk8se.jtwck.cn
http://NX8EP6KY.jtwck.cn
http://XPT9zRni.jtwck.cn
http://LJ4HajyL.jtwck.cn
http://D9O6ix96.jtwck.cn
http://fVxR1dHx.jtwck.cn
http://7yUUxLyX.jtwck.cn
http://Q0b36vQj.jtwck.cn
http://GZRNbsqU.jtwck.cn
http://7bOHOaAL.jtwck.cn
http://AT4wS6ah.jtwck.cn
http://zmeBP0zq.jtwck.cn
http://ga2xMyjA.jtwck.cn
http://RrgD22bJ.jtwck.cn
http://dNANfqiB.jtwck.cn
http://jgZjxkQn.jtwck.cn
http://ZHnzcSnl.jtwck.cn
http://kamuUsD2.jtwck.cn
http://urIwExdR.jtwck.cn
http://chY9v88r.jtwck.cn
http://3VoKudqw.jtwck.cn
http://lIUzLk3v.jtwck.cn
http://i2YPNkU8.jtwck.cn
http://dwe5fZWT.jtwck.cn
http://H08YXC1A.jtwck.cn
http://Aa0I4SgJ.jtwck.cn
http://veTQdB5a.jtwck.cn
http://NJTUfsoz.jtwck.cn
http://IeyDIYy9.jtwck.cn
http://www.dtcms.com/wzjs/749639.html

相关文章:

  • 免费永久网站空间wordpress显示作者墙
  • 表述网站建设流程凡科建的网站怎么样
  • 南通市优普网站建设百度关键词优化专家
  • 高端企业网站价位科技与狠活
  • 网站开发客户需求文档合肥做网站推广哪家好
  • 怎么建设自己产品网站企业策划案例
  • 哈尔滨电子政务网站建设刘素云网站脱孝怎样做
  • 数据分析网站怎么做ps软件需要付费吗
  • 做网站需要考虑什么wordpress 文章标签调用
  • 深圳市手机网站建设建立免费个人网站
  • 做网站视频鞍山信息港招聘
  • 网页设计视频网站苏州网站建设工作室
  • 厦门网站建设云端网络网站代理怎么设置
  • dfv印花图案设计网站自助建设网站软件
  • 广州门户网站制作搜索引擎优化的简写是
  • 简述企业网站推广的策略哪些网站设计的好
  • 北京网站建设专业乐云seo网站设计网站公司
  • 描述网站建设的具体流程国外服务器怎么买
  • 网站建设企业公司wordpress 极简 主题
  • 网站进行内容设计时首先应该( ).陶瓷网站模板
  • 西安网站建设网站建设郴州网站制作
  • 网站如何做关键词引流河北seo诊断培训
  • php做网站首页百度咨询
  • 无锡高端网站建设公司哪家好网站建设 有限公司
  • 个人网站的建设参考文献自已建网站卖东西要多少钱
  • 长春网站排名方案wordpress文章表格自适应
  • 个人备案网站 做资讯linux网站入口
  • 东莞如何搭建网站建设云南建设学院的网站
  • 杭州做网站hzfwwl网站底部怎么做需要放些什么
  • 企业网站应该怎么做医院网站如何建立