javascript闭包
来源:互联网 发布:java代码自动生成工具 编辑:程序博客网 时间:2024/05/19 21:41
先看下面函数:
<html><head><script src="jquery.js"></script><script> var scope="gloal scope"; function checkscope(){ var scope="local scope"; function f(){return scope;} return f(); } console.log(checkscope());</script></head><body></body></html>然后看下面函数:
<html><head><script src="jquery.js"></script><script> var scope="gloal scope"; function checkscope(){ var scope="local scope"; function f(){return scope;} return f; } console.log(checkscope()());</script></head><body></body></html>
两个返回结果都是 local scope
函数中方法的调用:
<html><head><script src="jquery.js"></script><script> function counter(){ var n=0; return{ setn:function() {n=9;}, count:function() {return n++;}, reset:function() {n=0;} } } var c=counter(),d=counter(); console.log(c.count()); console.log(c.count()); console.log(c.count()); console.log(d.count()); console.log(d.count()); d.reset() console.log(d.count()); var e=counter(); e.setn() console.log(e.count());</script></head><body></body></html>运行后的结果是:
0 1 2 0 1 0 9
一个很巧妙的闭包的方法:
<html><head><script src="jquery.js"></script><script> function addPrivateProperty(o,name,predicate){ var value; o["get"+name]=function() {return value;} o["set"+name]=function(v) { if(predicate && !predicate(v)) throw Error("set"+name+":invalid value"+v); else value=v; } } var o={}; addPrivateProperty(o,"Name",function(x) {return typeof x=="string";}); o.setName("Frank"); console.log(o.getName());</script></head><body></body></html>
输出为:
Frank
一个检查函数参数的闭包程序:
<html><head><script src="jquery.js"></script><script> function check(args){ var actual=args.length; console.log("the actual is:"+actual); var expected=args.callee.length; console.log("the expected is:"+expected); if(actual!=expected){ throw Error("Expected"+expected+"args;got"+actual); } } function f(x,y,z){ check(arguments); return x+y+z; } console.log(f(1,2,3)); console.log(f(1,2));</script></head><body></body></html>
参考资料:
[javascript权威指南]
- 【JavaScript】Javascript闭包
- javascript的闭包javascript
- Javascript闭包演示javascript
- [ javascript ] javascript闭包测试!
- 【javascript】javascript中的闭包
- 【javascript】学习Javascript闭包
- 理解 JavaScript 闭包
- javascript 闭包
- javascript闭包
- Javascript闭包
- JavaScript中的"闭包"
- JavaScript 闭包
- javascript中的闭包
- 理解 JavaScript 闭包
- Javascript Closures[闭包]
- javascript闭包
- Javascript 闭包详解
- Javascript闭包技术
- iframe的几个常见问题
- MySQL 主从服务器配置工作原理
- MPI入门实例讲解
- php正则表达式笔记
- 进制转换
- javascript闭包
- 题目1184:二叉树遍历
- C++/C宏定义中## 连接符与# 符的含义
- solr基础理论与维护管理
- ios xml解析
- TCHAR字符串的操作
- 防止IIS7+的应用池停止的一个小批处理
- Linux C编程--网络编程1--字节顺序和字节处理函数
- codeblocks 断点处 不停