=======================================================function add(num){
  return num+10;
}document.write(add());在add没有输入参数的时候,输出的结果为 NaN。但是:=================================================function callSomeFunction(someFunction,someArguments){
  return someFunction(someArgument);
}function add(num){
  return num+10;
}var res = callSomeFunction(add,30);
document.write(res);  //结果输出为40
这里add的参数num没有赋值,但是结果是40.=======================================================
问题:
这个函数callSomeFunction(add,30)是如何计算得出这个结果的?

解决方案 »

  1.   

    谁说Num没有赋值?num你不是赋了 someArgument 也就是30嘛
      

  2.   

    function callSomeFunction(add,num){
       return add(num);
    }function add(num){
       return num+10;
    }
    这么写估计明白了吧
      

  3.   

    someFunction(someArgument) someFunction是Add someArgument是num啊
      

  4.   

    callSomeFunction(add,30);
    你这儿传了30 进去的单步调试一下,看它怎么执行的
      

  5.   

    谢谢你们的回答, 那么这个函数的意思是不是可以这样理解:callSomeFunction(add,30),它的参数是函数add() + add()的参数30,
    然后callSomeFunction只是把add()的参数30赋给add(),然后返回add()计算的结果?不过理解起来还是有点别扭。另外再请教一个递归函数的问题,这个问题我昨晚弄了好久,还没想明白:
    function factorial(x){
     if(x<=1) return 1;
     return x*factorial(x-1);
    }factorial(5);  //输出为120
      

  6.   

    问了群里的朋友,好像有点明白了,自己再琢磨一下:factorial(5)=5*factorial(4)
    factorial(4)=4*factorial(3)
    factorial(3)=3*factorial(2)
    factorial(2)=2*factorial(1)
    factorial(1)=1