对javascript半包理解
来源:互联网 发布:军训合照能上传网络吗 编辑:程序博客网 时间:2024/06/06 03:08
刚开始想尝试javascript,所以自己也不知道会有多少错误,请多加提点。
现在了解到的闭包函数有返回函数和不返回函数的2种
下面这个是返回函数的
<html> <head> <title>test</title><script type="text/javascript">function foo() {var tmp = 3;return function () {tmp += 1;alert(tmp);}}var bar = foo();function test() {bar();//bar = null;//bar = foo();}</script></head><body><input type="button" value="test" onclick="test();"/></body></html>运行这段代码每点击一次按钮值都会加1
但当把代码里的那2行注释去掉的话每次的值都是4
个人理解是tmp这个对象就是个局部的全局变量,因为在return的function中引用了这个对象,返回的这个函数又被bar引用,而bar是全局变量,因此便在关掉这个页面前不会释放tmp这个变量。但在去掉代码里的现行注释后bar释放了对返回的函数的引用,因此也就释放了tmp,当重新bar=foo()时,已经是另一次创建的tmp了,因此去掉注释后每次都是弹出的4
另一种是下面这种不带return的
<html> <head> <title>test</title><script type="text/javascript">function closureExample(objID, text, timedelay){setTimeout(function() {document.getElementById(objID).innerHTML = text;}, timedelay);}function test(){closureExample('myDiv', 'Closure is created', 2000);}</script></head><body><div id='myDiv'></div><input type="button" value="test" onclick="test();"/></body></html>这种其实也是一样的,以text这个参数为例,这里传的是字面量,因此closureExamplej引用的是text的一个临时副本,相当于如下
因为setTimeout的回调引用了这个临时的副本,所以这个临时的副本也会成为一个局部的全局变量,在时间到时还能得到正确的值
阅读全文
1 0
- 对javascript半包理解
- 我对Javascript闭包的理解
- 对Javascript中的闭包的理解
- javascript对闭包的深入理解
- javascript对闭包的理解
- JavaScript-对闭包的理解
- 对JavaScript闭包的理解
- 对javascript闭包的基本理解
- 考一下你对Javascript闭包的理解
- 个人对JavaScript闭包的一些理解
- 对javascript闭包的理解(很好的文章)
- Javascript初学者关于对闭包的理解
- JavaScript进阶:谈谈对闭包的理解
- 理解 JavaScript 闭包
- 理解 JavaScript 闭包
- 理解 JavaScript 闭包
- 理解 JavaScript 闭包
- 理解 JavaScript 闭包
- 软件测试
- InputStream 的坑!
- Java中wait和sleep方法的区别
- idea 中使用mongo 客户端 不用开一堆桌面 一个工具全搞定
- form表单下的button按钮会自动提交表单的问题
- 对javascript半包理解
- 轰炸理解深度学习里面的encoder-decoder模型
- vue
- Content type expected:<application/json;charset=UTF-8> but was:<application/hal+json;charset=UTF-8>
- Activity UI界面架构图
- pixhawk视频学习笔记
- 使用QTGraphics View 框架实现地图浏览
- go连接mysql
- Django之Form组件校验de几种方式