caogao
在safari浏览器中添加transform规则,如果没有效果,把该规则的原始元素以块状显示
http://webdesignerwall.com/trends/47-amazing-css3-animation-demos
http://kb.cnblogs.com/page/48103/
即使媒体查询返回假,<link>标签上带有媒体查询的样式表仍将被下载(只不过不会被应用)
函数是一些可执行的代码,这些代码在函数被定义后就确定了,不会在执行时发生变化,所以一个函数只有一个实例。闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例
例子1:闭包中局部变量是引用而非拷贝
1 2 3 4 5 6 7 8 9 10 |
function say667() { // Local variable that ends up within closure var num = 666; var sayAlert = function() { alert(num); } num++; return sayAlert; } var sayAlert = say667(); sayAlert() |
因此执行结果应该弹出的667而非666。
例子4:外部函数所有局部变量都在闭包内,即使这个变量声明在内部函数定义之后。
1 2 3 4 5 6 7 8 |
function sayAlice() { var sayAlert = function() { alert(alice); } // Local variable that ends up within closure var alice = 'Hello Alice'; return sayAlert; } var helloAlice=sayAlice(); helloAlice(); |
执行结果是弹出”Hello Alice”的窗口。即使局部变量声明在函数sayAlert之后,局部变量仍然可以被访问到。
例子5:每次函数调用的时候创建一个新的闭包
function newClosure(someNum,someRef){
var num=someNum;
var anArray=[1,2,3];
var ref=someRef;
return function(x){
num+=x;
anArray.push(num);
alert('num: '+num+ '\nanArray '+ anArray.toString()+ '\nref.someVar '+ref.someVar);
}
}
closure1=newClosure(40,{someVar:'closure 1'});
closure2=newClosure(1000,{someVar:'closure 2'});
closure1(5);
closure2(10);
闭包的应用
Singleton 单件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var singleton = function () { var privateVariable; function privateFunction(x) { ...privateVariable... } return { firstMethod: function (a, b) { ...privateVariable... }, secondMethod: function (c) { ...privateFunction()... } }; }(); |
这个单件通过闭包来实现。通过闭包完成了私有的成员和方法的封装。匿名主函数返回一个对象。对象包含了两个方法,方法1可以方法私有变量,方法2访问内部私有函数。需要注意的地方是匿名主函数结束的地方的'()’,如果没有这个'()’就不能产生单件。因为匿名函数只能返回了唯一的对象,而且不能被其他地方调用。这个就是利用闭包产生单件的方法
匿名函数
1.把函数当成值来使用(一个函数返回另外一个函数并赋值给一个变量,还有函数表达式)
2.闭包
3.模仿块级作用域
(function(){
//这里是块级作用域
})();
caogao的更多相关文章
- JAVA基础语法-day02
五.变量.常量.作用域 静态量(类变量)只能写在类中,不能在外面,用static修饰. final修饰的变量为常量. 六.运算符 Math类是一个工具类,用于复杂数学运算,它的构造器被定义成priva ...
随机推荐
- [编码解码] Base64 编码换行和+号遍空格的处理
Android自身带有Base64加密与解密的包,可以方便地加密密码方便传输. String base64Token = Base64.encodeToString(token.trim().getB ...
- Jquery实现双击表单元格可编辑
<script type="text/javascript"> function doTableTdEditClick(param){ doTdEditable(par ...
- wall time
"showing elapsed time and wall clock time correspondingly." what's difference between elap ...
- Learning from the CakePHP source code - Part II
原文:http://debuggable.com/posts/learning-from-the-cakephp-source-code-part-ii:480f4dd6-57fc-4715-8709 ...
- 使用Interface创建的装饰者实现了必需的方法
很多开发团队也越来越认识到,自动化测试和持续部署可帮助开发团队提高迭代效率和质量.必须要有一份拿的出手的技术.社会不比在学校,上课随便听听,通过考试就行了,实在不行还有补考.在公司里,不是这样的. 正 ...
- 字符串:"2016-09-21T18:57:50+08:00[Asia/Chungking]" 转Date
public static void main(String[] args) throws Exception { Date date1 = new Date(); SimpleDateFormat ...
- 一些常见的CFD基本概念(飞机为例)(摘抄)
分享一些常见的,常用的但不容易掌握的CFD基础概念. 1.理想气体:不考虑流体粘性的影响. 2.不可压缩流体/恒密度:不考虑流体密度的变化.
- 修改MANIFEST.MF方法
步骤: 1.用winrar等其他解压工具,右键选择"用winrar打开": 2.找到MANIFEST.MF文件,鼠标左键拖拽到桌面: 3.最后一行加入Main-Class:(空格) ...
- Application.DoEvents()的作用
记得第一次使用Application.DoEvents()是为了在加载大量数据时能够有一个数据加载的提示,不至于系统出现假死的现象,当时也没有深入的去研究他的原理是怎样的,结果在很多地方都用上了App ...
- react中文API解读二(教程)
记下自己的react学习之路 ,官方文档写的很详尽,学起来应该比较简单 官方文档地址:react.http://reactjs.cn/react/docs/getting-started.html 2 ...