function box(sumF, num) { return sumF(num); } function sum(num) { return num + 10; } var result = box(sum, 10); alert(result);
box(sum,10) 肯定是执行第一个函数,结果是sunmF(10);这个时候没有玩,肯定还要执行sunmF函数,结果就是10+10=20;
sum函数被当作参数传入到sumF函数,然后sumF内的函数体实际上变为:return sum(num);num为10,返回值自然为20;
var result = box(sum, 10);你传入参数的时候,传入了一个函数名sum,它就会当成变量传入你的box函数中,然后执行sumF(num);也就是执行sum(10);最后结果就是10+10=20;