猿问

关于闭包封装变量的问题

这个是闭包封装变量的例子:


function isFirstLoad (){    //查询是否是第一次输入函数

        debugger;

        var _list = [];

        return function (id){

            if(_list.indexOf(id) >= 0){    

                return false;

            }else{

                _list.push(id);

                return true;

            }

        };

    }

var firstLoad = isFirstLoad();

    console.log(firstLoad(10));    

    console.log(firstLoad(10));

    console.log(firstLoad(20));

不明白_list为什么是私有的,firstLoad(10)在传参的时候直接进到了function (id)吗?为啥不是进到isFirstLoad ()啊,所以也不明白为什么可以传进来参数


我按照我以前的思路改成了这个,就不能实现函数的功能了,也不懂其中的原因:


function isFirstLoad (id){

        // debugger;

        var _list = [];

        if(_list.indexOf(id) >= 0){

            return false;

        }else{

            _list.push(id);

            return true;

        }

    }


    //使用

    console.log(isFirstLoad(10));

    console.log(isFirstLoad(10));

    console.log(isFirstLoad(20));

这样的话,全是ture,并不是很懂为什么不起作用


神不在的星期二
浏览 549回答 2
2回答

慕妹3242003

isFirstLoad返回的是function (id){},又有如下代码var firstLoad = isFirstLoad();因此firstLoad就是function (id){}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答