能帮忙解决下这道吗!?是真的不会了!谢谢各位小伙伴的帮助 再次感激不尽!
这样拆分一下可能会比较好理解
let x = 5;
function fnn(y) {
console.log(y + (++x));
}
function fn() {
return fnn;
}
let f = fn(6); // f = fnn
f(7); // fnn(7) = 7 + (++5) = 13
fn(8)(9); // fnn(9) = 9 + (++6) = 16
f(10); // fnn(10) = 10 + (++7) = 18
console.log(x); // 8
两个点:
1.fn 的作用只是返回了个函数
2.fn(8)(9) 意思是执行 fn 里面的那个函数
结果是:13,16,18,8
let f =fn(6); 返回的是内部的匿名函数,参数6没用,没有执行匿名函数体,所以不会大印大印出数据
f(7); 这是匿名函数f第一次执行,y+(++x) =7+(5+1)=13,此时x=6
fn(8)(9); fn(8)和第一句是同样的用法,得到匿名函数, fn(8)(9)传入参数9执行匿名函数,y+(++x) =9+(6+1)=16,此时x=7
f(10);第二次执行f函数,y+(++x) =10+(7+1)=18, 此时x=8
console.log(x) 输出8
1,fn不接收参数,故6废弃。f为内部返回的函数。
2,f(7)让x加一,输出7+6。
3,后面同理,每次x加一。9+7,10+8。
4,加了三次一,结果应为8。