《JS高级程序设计》——函数#闭包#

函数本身就是一个非常有用的工具,至少我经常使用函数来简化我的代码。
当然,函数还有更多值得学习的地方,在下知识浅薄,尚在探索学习。
在这里要重提 arguments.callee();它是所有函数具有的属性,代表函数本身,可在函数内部安全的调用函数本身,实现递归;

function myFunc(num) {
    var s = '';
    for (var i = 0; i < num; i++) { s = s + i; }
    s = s + num;
    console.log(s);
    num--;
    if (num <= 0) { return; }else{ arguments.callee(num--); }
}

《JS高级程序设计》——函数#闭包#_第1张图片

1 、 匿名函数

<ul class="sub">
    <li><a href="#home">HOME</a></li>  
    <li><a href="#brand">BRAND</a></li>                      
    <li><a href="#lookbook">LOOKBOOK</a></li>                      
    <li><a href="#lookbook">PRODUCT</a></li>                     
    <li><a href="#news">NEWS</a></li>                
    <li><a href="#video">VIDEO</a></li>                      
    <li><a href="#store">STORE</a></li>              
    <li><a href="#join">JOIN</a></li>                     
    <li><a href="#contact">CONTACT</a></li>    
</ul>
var navList=document.getElementsByTagName('a');
for (var i = 0; i < navList.length; i++) {
        (function(i) {
            console.log(i);
            navList[i].addEventListener('click',function() {
                console.log(this.innerHTML);
            });
        })(i);//创建匿名函数,将外层函数的变量传给匿名函数并立即执行
};

javascript的闭包无非就是要理解3个要点
1.作用域链
2.内存回收机制
3.函数嵌套
闭包的概念就是函数嵌套、内部函数被外部调用、且使用了外部函数的参数。
导致内存回收异常。

你可能感兴趣的:(函数,闭包)