(() => { function fun(n, o){ console.log(o); return { fun: function(m){ return fun(m, n); } } } console.log('---------- (1) ----------'); var a = fun(0);a.fun(1);a.fun(2);a.fun(3); console.log('---------- (2) ----------'); var b = fun(0).fun(1).fun(2).fun(3); console.log('---------- (3) ----------'); var c = fun(0).fun(1);c.fun(2);c.fun(3); })(); /* ---------- (1) ---------- undefined 0 0 0 ---------- (2) ---------- undefined 0 1 2 ---------- (3) ---------- undefined 0 1 1 */ /* 帮我解释一下,谁哦? */
记住两句话:1、谁调用谁就是this。2、函数的作用域是定义时就确定的。
感谢传授葵花宝典。但是要一目了然,还得入关。thx。
@Coca-code: 要真正理解还是需要一定时间和偶尔的顿悟的。
浏览器打下断点就一目了然