美文网首页
两道js闭包题目;

两道js闭包题目;

作者: forLovn | 来源:发表于2017-03-01 11:41 被阅读0次

    两道面试题;

    1:
     function test() {
                 var value =2;
                return function (param) {
                    alert(value * param);
                    alert(this.value * param);
                }
            }
            value=3;
            var a = test();
            a(2);//4;6
    解释下:一点闭包你里面的this指向window, 但当变量名相同且没有使用this关键字时,使用离它最近的那个变量;
    
    2:
    function test() {
                 var value =2;
                return function (param) {
                    value *=param;
                    alert(value)
                }
            }
            value=3;
            var a = test();
            a(2);//4
            a(2);//8
    解释如下:
    垃圾回收是指:一个值,如果没有任何变量指向它,那么它就被回收。
    你执行完一个函数,函数本身不会被回收。函数内部的变量是否回收要分情况:
    如果是一般函数,没有闭包,那么函数内的局部变量就会被回收。
    如果函数内有闭包,那么闭包会在函数执行完后仍然引用变量,也就是说变量不会被回收。
    
    3:js闭包应用
    <script>
            window.onload=function () {
                for(var i=1;i<=6;i++){
                    document.getElementById("div"+i).onclick=(function (value){
                        return function(){
                            alert(value)
                        }
                    })(i)
                }
            }
        </script>
    

    相关文章

      网友评论

          本文标题:两道js闭包题目;

          本文链接:https://www.haomeiwen.com/subject/qesqgttx.html