匿名函数的用处
今天闲来无事,给大家说说匿名函数的用处
1.匿名函数用()包住
紧跟着用();实现(或者说编译)
实例如下:
(function ()//使用匿名函数来隐藏全局变量
{
var msg="thank you";
window.onunload=function(){
alert(msg);
};
})();
这里的msg只能在内部访问
在外部是不能访问的,我们看到了其实js也有访问权限的
只是需要我们用特殊的方法来处理,大家可以试着在外面调用msg这个变量
验证其访问权限
2. 我曾经试过动态给元素添加对象
例如:<div id="test"><li></li> <li></li> <li></li></div>
var obj=document.getElementById("test") .getElementsByTagName("li");
obj是三个li的集合对象
到这里 我希望大家能自己尝试着给这个三个li加上事件 onmouseover,onmouseout :当鼠标滑过,背景色变成红色
。。。。。。
你实现了吗?如果没有实现看看下面的代码
var obj=document.getElementById("main");//匿名函数解决函数只能引用外部循环变量的最后值问题
var items=["click","keydown"];
for(var i=0;i<items.length;i++)
{
(function (){//#
var item=items[i];
obj["on"+item]=function(){
alert("thanks"+item);
};
})//#
();//# 如果这把三个"#"行的语句注释掉,不能够达到预期的效果
}
这问题其实我也不大懂什么原因,对js 的机制还是不很了解
不过 我希望大家能记住这个问题 以及解决这个问题的方法
按照上面代码的注释:去掉带有#的三行代码
会发现并不能达到我们预期的效果
就是说,循环的变量i我们在
function(){
alert("thanks"+item);
};
里面是访问不到的 ,只能访问到最后的那个i值
用了匿名函数以后,问题解决了
注:闭包意味着内存函数可以引用存在于包围它的外围函数的变量,即使外层函数的执行已经终止,使用闭包的时候会遇到一个问题。
闭包允许你引用父函数(就是包含它的外围函数)内的变量,但提供的值并非该变量创建的值
而是在父函数范围内最终的值
呵呵 匿名函数的用处大家了解一二了吧
js很深奥,有很多我们未知的秘密,需要我们去探寻
这也是我为什么这么喜欢它的原因
希望大家也能喜欢上它
----------和你们一起进步,和你们一起成长

浙公网安备 33010602011771号