前端JavaScript面试技巧笔记(4)

知识点:

    #闭包的实际应用

闭包可以用来封装数据来保护数据

如
function isFirstLoad(){
    var _list = [];
    return function(id){
        if(_list.indexOf(id) >= 0){
            return false;
        }
        else{
            _list.push(id);
            return true;
        }
    }
}

var firstLoad = isFirstLoad();
firstLoad(10) //true
firstLoad(10) //false
firstLoad(20) //true
firstLoad(20) //false

用闭包可以防止存储用的_list被外部得到修改

    #例题:创建十个按钮分别绑定点击事件来输出0到9

var i;
for(i = 0; i < 10; i ++){
    (function(i){
        var a = document.createElement('a');
        a.innerHTML = i + '
'; a.addEventListener('click',function(e){ e.preventDefault(); alert(i); }) document.body.appendChild(a); } )(i) } 如果直接在for循环中创建按钮,那么在点击时i已经确定了,点击出来的结果都是一样的9;

 

你可能感兴趣的:(JavaScript)