(function(){ var r, url; var s = location.href; url = /http:\/\/www.csdn.com.cn/i; if(s.search(url)>=0){ var head=document.getElementById("topHead"); head.style.width="990px"; } }) 声明了一个匿名函数 加个()执行它 这种方式叫函数的闭包(closure),可以让匿名函数立即被执行(最后面的那对括号就是让上面定义的匿名函数立即执行的秘密),这种闭包有以下几个优势或特点: 1. 减少了全局变量的个数,可以有效减少命名冲突 原因是包在里面的变量对于外面来说是不可见的,他们的作用域近局限在匿名函数的函数体内 2. 这种方式可以保存闭包外面的变量的状态,这个特点还是举个例子比较易懂:
上面代码的for循环一共两次,我们本来的目的是每隔两秒钟把每一次循环的索引(也就是i)输出,我们期待它应该输出:0和1,但是实际输出结果却是两次都是1 使用了闭包之后,我们会把循环中每一次i值的状态都保存下来,如下代码所示:
这次我们得到了正确的结果:0和1 因为闭包引用的是父函数范围内的最终值 |
|