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

青岛建设银行股份有限公司网站首页/腾讯与中国联通

青岛建设银行股份有限公司网站首页,腾讯与中国联通,cnnic可信网站,wordpress可视化编辑器推荐文章目录变量作用域闭包1.什么是闭包2.调试闭包3.闭包的作用4.闭包的案例4.1.循环注册点击事件4.2.定时器中的闭包4.3.打车价格变量作用域 变量根据作用域的不同分为两种:全局变量和局部变量。 1.函数内部可以使用全局变量。 2.函数外部不可以使用局部变量。 3.当函数执行完毕,…

文章目录

  • 变量作用域
  • 闭包
    • 1.什么是闭包
    • 2.调试闭包
    • 3.闭包的作用
    • 4.闭包的案例
      • 4.1.循环注册点击事件
      • 4.2.定时器中的闭包
      • 4.3.打车价格


变量作用域

变量根据作用域的不同分为两种:全局变量和局部变量。 1.函数内部可以使用全局变量。 2.函数外部不可以使用局部变量。 3.当函数执行完毕,本作用域内的局部变量会销毁。

闭包

1.什么是闭包

闭包(closure)指有权访问另一个函数作用域中变量的函数。---- JavaScript高级程序设计
简单理解就是,一个作用域可以访问另外一个函数内部的局部变量。

代码如下(示例):

<script>// 闭包(closure)指有权访问另一个函数作用域中变量的函数。// 闭包: 我们fun 这个函数作用域 访问了另外一个函数 fn 里面的局部变量 numfunction fn() {var num = 10;function fun() {console.log(num);}fun();}fn();</script>

在fun这个作用域里面可以访问另外一个函数fn作用域中的局部变量,那就产生了闭包。事实上能打印出10。
被访问的变量所在的函数就是闭包函数即fn为闭包函数。

2.调试闭包

1.打开浏览器,按F12键启动chrome调试工具。
2.在sources中设置断点,并且重新刷新页面。
3.找到scope选项(Scope 作用域的意思)。
4.当我们重新刷新页面,会进入断点调试,Scope里面会有两个参数(global 全局作用域、local局部作用域)。
5.当执行到 fun ()时,Scope里面会多一个Closure参数,这就表明产生了闭包。

3.闭包的作用

闭包的主要作用: 延伸了变量的作用范围

fn 外面的作用域可以访问 fn 内部的局部变量,f函数也可使用fn里面的num局部变量,当fn函数执行完毕后,num 局部变量就会销毁,但是f函数等着调用fn,所以等着f调用完毕后,才会销毁num变量。

代码如下(示例):

<script>function fn() {var num = 10;return function() {console.log(num);}}var f = fn();f();</script>

4.闭包的案例

4.1.循环注册点击事件

因为for循环是同步的,而dom元素绑定事件click是异步的,所以如果直接console.log(i),得到的结果是4。
代码如下(示例):

<body><ul class="nav"><li>榴莲</li><li>臭豆腐</li><li>鲱鱼罐头</li><li>大猪蹄子</li></ul><script>// 闭包应用-点击li输出当前li的索引号// 1. 我们可以利用动态添加属性的方式var lis = document.querySelector('.nav').querySelectorAll('li');for (var i = 0; i < lis.length; i++) {lis[i].index = i;lis[i].onclick = function() {// console.log(i);console.log(this.index);}}// 2. 利用闭包的方式得到当前小li 的索引号for (var i = 0; i < lis.length; i++) {// 利用for循环创建了4个立即执行函数// 立即执行函数也成为小闭包因为立即执行函数里面的任何一个函数都可以使用它的i这变量(function(i) {// console.log(i);lis[i].onclick = function() {console.log(i);}})(i);}</script>
</body>

2中点击事件函数用到了传递的参数i,所以此时产生了闭包。
立即执行函数也成为小闭包因为立即执行函数里面的任何一个函数都可以使用它的i这变量

4.2.定时器中的闭包

代码如下(示例):

<body><ul class="nav"><li>榴莲</li><li>臭豆腐</li><li>鲱鱼罐头</li><li>大猪蹄子</li></ul><script>// 闭包应用-3秒钟之后,打印所有li元素的内容var lis = document.querySelector('.nav').querySelectorAll('li');for (var i = 0; i < lis.length; i++) {(function(i) {setTimeout(function() {console.log(lis[i].innerHTML);}, 3000)})(i);}</script>
</body>

4.3.打车价格

代码如下(示例):

<body><script>// 闭包应用-计算打车价格 // 打车起步价13(3公里内),  之后每多一公里增加 5块钱.  用户输入公里数就可以计算打车价格// 如果有拥堵情况,总价格多收取10块钱拥堵费// function fn() {};// fn();var car = (function() {//此行的函数为闭包函数var start = 13; // 起步价  局部变量var total = 0; // 总价  局部变量return {// 正常的总价price: function(n) {if (n <= 3) {total = start;} else {total = start + (n - 3) * 5}return total;},// 拥堵之后的费用yd: function(flag) {return flag ? total + 10 : total;}}})();console.log(car.price(5)); // 23console.log(car.yd(true)); // 33console.log(car.price(1)); // 13console.log(car.yd(false)); // 13</script>
</body>
http://www.lbrq.cn/news/1538839.html

相关文章:

  • 网站建立定位企划/百度的客服电话是多少
  • 在家帮诈骗团伙做网站/网络推广网络营销和网站推广的区别
  • 网站开发工具推荐/外贸平台排名
  • 怎么帮网站做支付接口/凡科建站平台
  • 旅游网站对比模板下载/腾讯广告
  • 企业网站开发douyanet/现在最好的营销方式
  • django成品网站源码/今日特大军事新闻
  • 百度云用流量做网站/什么网站都能进的浏览器
  • 做游戏开箱网站的法律风险/seo关键词排名优化是什么
  • 护卫神 安装wordpress/网站搜索引擎优化的基本内容
  • 网站建设学什么语言/扬州seo
  • 企信网企业信用信息系统/seo教学平台
  • 岳阳网站建设设计/关键词搜索排名公司
  • 做图片网站侵权吗/百度号码认证平台官网
  • wordpress公众号号涨粉/seo排名赚app多久了
  • 中小学智慧校园建设平台网站/山东济南seo整站优化费用
  • 网站建设亿码酷出名5/网站权重怎么提高
  • 网站开发托管协议/91永久海外地域网名
  • 网站建设与运营/营销工具
  • 建站教程图解/天津谷歌优化
  • 自己做网站页面/免费做网站的网站
  • 用php做电商网站/青岛新闻最新消息
  • 网站做开票/中国十大电商平台
  • 网站正在维护中啥意思/销售网络平台推广
  • 新网站如何做测试/企业网站运营推广
  • 嘉定专业做网站/个人推广网站
  • 微信平台app网站建设/搜索网站排行
  • 网站详情页用cdr做可以吗/网址域名大全
  • 政务网站党风廉政建设栏目/百度一下百度下载
  • 现货交易平台是不是诈骗/贵州二级站seo整站优化排名
  • 01.初识mysql数据库,了解sql语句
  • 2943. 最大化网格图中正方形空洞的面积
  • 电影购票+票房预测系统 - 后端项目介绍(附源码)
  • 力扣 hot100 Day77
  • go语言条件语if …else语句
  • Kafka的ISR、OSR、AR详解