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

集宁有做蒙古黑石材网站的嘛实体店怎么引流推广

集宁有做蒙古黑石材网站的嘛,实体店怎么引流推广,宁波网站排名,桐乡做网站的公司对闭包的理解 闭包是内层函数使用外层变量 (子级可以访问父级的变量,但是父级不可以访问子级的) 闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,创建的函数可以访问到当前函数的局部…

对闭包的理解

闭包是内层函数使用外层变量
(子级可以访问父级的变量,但是父级不可以访问子级的)

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,创建的函数可以访问到当前函数的局部变量。

闭包有两个常用的用途;

  • 闭包的第一个用途是使我们在函数外部能够访问到函数内部的变量。通过使用闭包,可以通过在外部调用闭包函数,从而在外部访问到函数内部的变量,可以使用这种方法来创建私有变量。
  • 闭包的另一个用途是使已经运行结束的函数上下文中的变量对象继续留在内存中,因为闭包函数保留了这个变量对象的引用,所以这个变量对象不会被回收。
    这是因为 JavaScript 的垃圾回收机制会检查对象是否还被引用,如果没有引用,则认为该对象是垃圾,可以被回收。而闭包的内部函数可能会继续访问外部函数的变量。只有当闭包函数本身也被销毁时,其引用的外部作用域才会被释放。
    比如,函数 A 内部有一个函数 B,函数 B 可以访问到函数 A 中的变量,那么函数 B 就是闭包。
function A() {let a = 1;window.B = function () {console.log(a);};
}
A();
B(); // 1

面试真题

1. 基础题

在 JS 中,闭包存在的意义就是让我们可以间接访问函数内部的变量。经典面试题:循环中使用闭包解决 var 定义函数的问题

for (var i = 1; i <= 5; i++) {setTimeout(function timer() {console.log(i);}, i * 1000);
}

首先因为 setTimeout 是个异步函数,所以会先把循环全部执行完毕,这时候 i 就是 6 了,所以会输出一堆 6。解决办法有三种:

  • 第一种是使用闭包的方式
for (var i = 1; i <= 5; i++) {(function (j) {setTimeout(function timer() {console.log(j);}, j * 1000);})(i); // 把i作为参数传递给前面括号里的j
}

使用立即执行函数包裹 setTimeout 的回调函数,能够创建一个闭包
在上述代码中,首先使用了立即执行函数i 传入函数内部,这个时候值就被固定在了参数 j 上面不会改变,当下次执行 timer 这个闭包的时候,就可以使用外部函数的变量 j,从而达到目的。

  • 第二种就是使用 setTimeout 的第三个参数,这个参数会被当成 timer 回调函数的参数传入。
for (var i = 1; i <= 5; i++) {setTimeout(function timer(j) {console.log(j);},i * 1000,i);
}
  • 第三种就是使用 let 定义 i 了来解决问题了,这个也是最为推荐的方式
for (let i = 1; i <= 5; i++) {setTimeout(function timer() {console.log(i);}, i * 1000);
}

2. 变形题

/* TASK A1In the following code, what will be printed to console if a user clicks the first and fourth button? Why?
*/var nodes = document.getElementsByTagName("button");for (var i = 0; i < nodes.length; i++) {nodes[i].addEventListener("click", function () {console.log("You clicked element #" + i);});}

输出的是 nodes.length的值;

因为var生命的是函数作用域

解决:
方法1:let
方法2:闭包

 var nodes = document.getElementsByTagName("button");for (var i = 0; i < nodes.length; i++) {(function (i) {nodes[i].addEventListener("click", function () {console.log("You clicked element #" + i);});})(i);}
http://www.hkea.cn/news/3631/

相关文章:

  • 网站优化的基本思想与原则整站优化加盟
  • 专门找事做的网站百度渠道开户
  • wordpress 4.8.6下载搜索关键词排名优化软件
  • 哪个网站可以做电视背景墙品牌推广策略
  • 做1个自己的贷款网站seo图片优化
  • 山西做网站运营的公司免费发布推广信息的平台
  • WordPress腾讯对象存储宁波正规seo快速排名公司
  • wordpress企业网站教程免费推广的途径与原因
  • 网站建设whjzyhapp推广策划方案
  • 教育培训网站建设ppt无锡做网站的公司
  • 做网站设计多少钱灰色行业关键词推广
  • 怎么给钓鱼网站做防红安徽网站建设优化推广
  • 惠州网站建设一般多少钱seo独立站
  • 虚拟主机网站301跳转2023网站推广入口
  • 做营销网站公司腾讯会议多少钱一个月
  • 郑州电子商务网站建设看片子用什么app免费苹果手机
  • 网站404页面做晚了网站推广方案有哪些
  • 小程序游戏怎么赚钱西安网站seo
  • 长春网站建设小程含有友情链接的网页
  • 谁有人和兽做的网站网页开发用什么软件
  • 邯郸专业网站建设排行榜百度
  • 在国外做黄皮网站违法么如何做好平台推广
  • 做网站要用框架吗苏州市网站
  • 网站登录人数实时更新如何做互联网平台推广是什么意思
  • 有没有专业做效果图的网站最新消息新闻
  • asp 网站模板网站优化外包找谁
  • 网站推广一般怎么做百度下载安装免费版
  • 网站建设逻辑填写电话的广告
  • 镇政府网站建设百度学术官网论文查重免费
  • 江西做网站找谁宁波seo外包推广平台