求教大神关于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"

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

2个回答

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问