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

网页开发者工具怎么用/苏州seo报价

网页开发者工具怎么用,苏州seo报价,网站规划设计流程,如何用源代码提取网页的图片2019独角兽企业重金招聘Python工程师标准>>> 1. 变量作用域 要理解闭包,首先要先理解javascript变量的作用域 变量的作用域只有两种:全局变量 局部变量 全局变量:任何地方都可以访问(函数内部、外部) 局部变量:只能在…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1. 变量作用域

要理解闭包,首先要先理解javascript变量的作用域 变量的作用域只有两种:全局变量 + 局部变量

全局变量:任何地方都可以访问(函数内部、外部) 局部变量:只能在变量所在函数及函数的子函数中访问 :fa-exclamation-circle:注意:变量声明如果不使用var关键字,那么他就是一个全局变量,即使是在函数内部定义

1.1 计算器困境

希望计算器的值counter能够被修改,但是不希望被任意更改(只能+1) 全局变量实现:

    var counter = 0;function add(){++counter;}add(); //1add(); //2add(); //3问题:counter的值可以被任意更改。

局部变量实现:

    function add(){var counter = 0;++counter;}add(); //1add(); //1add(); //1问题:counter的值不能按照设想来正确输出。

javascript的闭包就可以解决该问题。

2. javascript内嵌函数

在javascript中,所有的函数均可以访问它们上层的作用域

function add(){var counter = 0;function plus(){++counter;}
}

上面代码中,plus函数在add函数内部,这使得add内部的所有局部变量都是对plus可见的,但是反过来却不行。 这就是javascript语言特有的【链式作用域】结构(chain scope)

如果我们能够在外部访问plus函数,那么这个【计算机困境】就能够解决了 所以,只要将plus函数作为add函数的返回值,就可以访问plus函数了, 也就可以通过plus函数,在add函数外部访问add函数局部变量了

================ 以上所说就是闭包。

3. javascript中的闭包

当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。 闭包就是将函数内部和函数外部连接起来的一座桥梁

3.1 闭包的用途:
  1. 可以读取函数内部的变量
  2. 可以让函数内部变量的值始终保存在内存中

计算机困境可以更改为以下两种方式:

1:(建议)
var add = (function(){var counter = 0;return function plus(){return ++counter;}
})();add(); //1
add(); //2
add(); //32:
function add(){var counter = 0;return function plus(){return ++counter;}}var f1 = add(); f1(); //1f1(); //2f1(); //3

以上证明:局部变量counter一直在内存中, 并没有在函数执行完后自动清除。 why?????? because: --add是plus的父函数,而plus被赋给了一个全局变量,导致plus始终在内存中, 而plus函数依赖于add函数,所以add也一直在内存中,不会再结束后被GC回收。

3.2 getter/setter
function add(){var counter = 0;getCounter = function(){reutrn counter;}
}

注意add中的getCounter变量,因为没有使用var来声明,所以它是一个全局变量, 可以当做java中的getter来使用 :fa-hand-o-down:

public class add{private int counter = 0;public int getCounter(){return counter;}
}
3.3 闭包应该注意的问题
  1. 由于闭包使得函数中的变量,都被保存在内存中,内存消耗很大,所以不能滥用闭包。 否则会造成网页性能问题,甚至会内存泄漏。 解决方案:退出函数之前,将不使用的局部变量全部消除(变量的值为null即可)。
  2. 如果把函数当做Object使用,不要随便通过setter/闭包改变函数内部的变量值。

转载于:https://my.oschina.net/u/2462423/blog/715059

http://www.lbrq.cn/news/1438255.html

相关文章:

  • 做网站有用吗/百度网盘资源搜索引擎搜索
  • 运维网站制作/会计培训班初级费用
  • 线下推广活动/南昌网站seo外包服务
  • 两人做性视频网站/深圳seo博客
  • 如何建立自己的平台/惠州市seo广告优化营销工具
  • 高中男女做那个视频网站/bing收录提交
  • 织梦网站在css中怎样做导航栏/免费二级域名注册申请
  • 广东哪家网站建设网页设计服务/营销策略手段有哪些
  • 在建项目备案人员查询/南宁seo产品优化服务
  • 企业网站seo外包 s/国际新闻网
  • 网站制作工资/网络优化工程师前景
  • 深圳营销外贸网站制作/百度用户服务中心人工24小时电话
  • 网站 模板/高清视频线和音频线的接口类型
  • 花20亿做网站/淘宝关键词指数
  • 比较著名的网站用javaweb做的/百度新闻发布平台
  • 深圳华强北做网站/竞猜世界杯
  • 洛阳便宜网站建设报价/阿里巴巴官网首页
  • 没有固定ip做网站/网站排名优化工具
  • 把网站做成手机版/国外免费推广网站有哪些
  • 国家企业信用平台官网/在线seo优化工具
  • 全球设计网分站/网络app推广是什么工作
  • 网站建设和推广的完整话术/怎么推广软件
  • 珠海网站建设小程序/河南网站推广多少钱
  • 重视党建网站建设/东莞最新疫情
  • 网站读取错误时怎样做/微信投放广告多少钱
  • 美国空间怎么提高网站速度/阿里指数查询官网入口
  • 长沙做网站的/网络营销的目的是什么
  • html5网站正在建设中模板下载/朋友圈广告投放平台
  • 商用营销型网站建设/品牌推广的意义
  • 如何给国外网站做seo/外链网站推荐几个
  • 【论文笔记】DOC: Improving Long Story Coherence With Detailed Outline Control
  • 笔趣阁追书小说
  • 旧版MinIO的安装(windows)、Spring Boot 后端集成 MinIO 实现文件存储(超详细,带图文)
  • 基于Apache Flink的实时数据处理架构设计与高可用性实战经验分享
  • C++——高性能组件
  • 【数据库】 MySQL 表的操作详解