function sum() {
if (arguments.length == 2) {
return arguments[0] + arguments[1];
} else if (arguments.length == 1) {
var first = arguments[0];//2
return function(second) {
return first + second;//3
};
}
}
console.log(sum(2,3));//5
console.log(sum(2)(3));//5
var fn = 90;
var o = {
fn: function() {
console.log(fn);
}
}
console.log(o.fn());
function fun(n, o) {
console.log(o)
return {
fun: function(m) {
return fun(m, n);
}
};
}
var a = fun(0);
a.fun(1);
a.fun(2);
a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);
var c = fun(0).fun(1);
c.fun(2);
c.fun(3);
/*
解析时我用大括号代表作用域:
全局socoped:{
var a=fun(0)
socoped[fun(0)]:{
var n=0;
var o;
console.log(o)//打印undef
return {fun: function(m) {return fun(m, n)}}
socoped[a.fun(1)]:{
var m=1;
return fun(m, n)==> fun(1,0)
}
socoped[a.fun(2)]:{
var m=2
return fun(m, n)==>fun(2,0)
}
socoped[a.fun(3)]{
var m=3;
return fun(m, n)==>fun(3,0)
}
}
a.fun(1);
socoped[a.fun(1)--fun(1,0)]:{
var n=1
var o=0
console.log(o)//打印0
return {fun: function(m) {return fun(m, n)}}
}
a.fun(2);
socoped:[a.fun(2)--fun(2,0)]{
var n=