易截截图软件、单文件、免安装、纯绿色、仅160KB

JavaScript Closure(闭包) 那些事

1 一起困惑始于变量的作用域
请先看下面的代码:
示例1:
     var message = " this is a very simple function ";
     function simpleFunc(){
             alert(message);
     }
背后的道理大家都懂(如果不懂的可以先别往下看了):一个function能够访问其自身及其更外层的作用域内的变量。
请再继续看下面这段代码:
示例2:   
     var message = " this is a very simple function ";
     function simpleFunc(){
             var name = "robin";
             function secretFunc(){
                        return "Hi, "+name+ ", "+message;
             }
             return secretFunc;
     }
     var magicFunc = simpleFunc();
     var result = magicFunc(); // result的值是: Hi, robin, this is a very simple function
好了,困惑的地方来了,magicFunc是一个global的变量,居然访问到了simpleFunc内部的变量'name' !!这正是Javascript之神奇的闭包在起作用,simpleFunc返回的secretFunc对象就是一个闭包,那么到底什么是闭包?
2 拨开云雾见青天
简言之,闭包就是function中的function。
简言之,闭包的作用:1)保证function对象在内存中不被回收;2)访问其它函数内部的变量。
对于第1)点的理解可以结合着示例2来看。magicFunc这个global变量保存了对于secretFunc的引用,因此secretFunc会一直在内存中而不会被自动回收;此外,secretFunc作为simpleFunc的属性,simpleFunc也不会被回收。
对于第2)点的理解需要首先看看closure的定义。在Mozilla的Core JavaScript 1.5 Guide中有这么一句话:A closure is a special kind of object that combin


相关文档:

JavaScript初学者指南

 
本文译自:http://www.codeproject.com/KB/scripting/jsbeginner.aspx
原文:JavaScript For Beginners
适宜对象:JavaScript初学者。
 
目录:
 
包含与引入(Embedding,including)
write 和 writeln
文档对象(document object)
bgColor 和 fgColor
消息框(Message Box)
变量(Variables ......

javascript mousewheel的事件分派

这是一个很特殊的事件,w3c默认是承认为“mousewheel”,但我在它上面找到的资料比较少,只发现一个。号称最标准的FF,用一个私有实现DOMMouseScroll。总之实现很混乱。我们先看各浏览器对它的支持程度吧。









IEfirefoxsafari ......

javascript中数组元素删除

var arr=['a','b','c'];   
  若要删除其中的'b',有两种方法:  
  1.delete方法:delete arr[1]   
  这种方式数组长度不变,此时arr[1]变为undefined了,但是也有好处原来数组的索引也保持不变,此时要遍历数组元素可以才用   
  for(index in arr)& ......

JavaScript字幕滚动效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>

</head>
<body>
<form id ......

javascript 的try catch


Try...Catch 语句
try...catch 可以测试代码中的错误。try 部分包含需要运行的代码,而 catch 部分包含错误发生时运行的代码。
语法:
try
{
//在此运行代码
}
catch(err)
{
//在此处理错误
}
注意:
try...catch 使用小写字母。大写字母会出错。
实例 1
下面的例子原本用在用户点击按钮时显示 " ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号