第一个:
var   A   =   26; 
function   test(){ 
        var   AA   =   A; 
        var   B   =   0; 
        function   show(){ 
                if(B>=AA) B = 0;
                (AA==A)?++B:B=1;AA=A; 
                document.write(B); 
        } 
        return  show;

var   showlist   =   test(); 
showlist(); //1
showlist(); //2
showlist(); //3
showlist(); //4
var A=2; 
showlist(); //1
showlist(); //2
showlist(); //1
showlist(); //2第二个:
循环遍历改变button的onclick事件
<script>
function a(id){
    alert("这是第"+id+"个事件");
}
function b(id){
    alert("这是第"+id+"个事件");
}
function replaceClick(){
    var obj = document.getElementsByName("but");
    for(var i = 1;i<=obj.length;i++){
        var fin = i+4;
        var id = "but"+ i;
        document.getElementById(id).onclick = function(){b(fin)};
    }
}
</script>
<body>
<input type="button" value="替换方法" onClick="replaceClick();">
<input name="but" id="but1" type="button" value="click me" onClick="a(1);">
<input name="but" id="but2" type="button" value="click me" onClick="a(2);">
</body>执行replaceClick后,各个button的点击结果都是一样的,与预期不符,是错误的结果。原来document.getElementById(id).onclick = function(){b(fin)};这里产生了一个闭包,function(){b(fin)}中并没有定义变量fin,它成为了该function的上一层函数里的变量fin的引用,所以,遍历更改完各button的点击事件后,出来的结果始终是最后一个fin的值。理解了这点,也就知道怎么处理了:function replaceClick(){
    var obj = document.getElementsByName("but");
    for(var i = 1;i <=obj.length;i++){
        var fin = i+4;
        var id = "but"+ i;
        document.getElementById(id).onclick = function(_id){return function(){b(_id)}}(fin);
    }
}