求教大神关于js的问题

function ccd(y){
    var x=y;
    return function(){
        console.log(x++);
        console.log(y--);
    }
};
ccd(5)();// "5" "5"
ccd(5)();// "5" "5"
ccd(5)();// "5" "5"

function bdc(y){
 var x=y;
 return function(){
 console.log(x++);
 console.log(y--);
 }
 }(5);
 bdc();// "5" "5"
 bdc();// "6" "4"
 bdc();// "7" "3"

为什么上面两个方法,执行的结果不一样

具体可以看一下 js 的闭包~

第一个是普通的函数执行,每次执行xy都是5,传入的值,x=y执行了三次
第二个是函数闭包x++,y- -都是操作同一个值。
x=y赋值只执行一次