Javascript函数名vs函数字面量用法

javascript function name vs function literal usage

本文关键字:函数 用法 vs Javascript 数字      更新时间:2023-09-26

测试部分求值函数时:

function partialEval(fn)
   {
      var sliceMethod = Array.prototype.slice; 
      if(arguments.length > 1)
      {
        var aps = sliceMethod.call(arguments, 1);
      }

      return function () {
         return fn.apply(this,aps.concat(  sliceMethod.call(arguments)  ));  
    };
    }


    var x= function add(a,b,c,d){
     console.debug(a +  " - " +  b +  " - " +  c +  " - " +  d);
     return a+b+c+d; 
    }
    var pa = partialEval(add, 1,2); // Query here
    var zz = pa(3,4);
    console.debug(zz);

调用partialEval(add,1,2)和partialEval(x,1,2)有什么区别?我理解x在这里是一个函数字面量,使用x会得到正确的结果。但是当我使用add作为发送给partialEval方法的函数名时,输出将作为3。有人能解释一下两者在执行上的不同吗?

谢谢。

当你这样做的时候:

var x = function add(a,b,c,d){
  // code...
}

add应该只存在于函数内部(并引用自身)。在功能之外,您需要使用x, add将是undefined

我认为命名函数会被提升,而函数字面量不会。

没有理由同时使用两种类型。我通常使用匿名函数literal,因为在我的脑海中,它将它们映射为对象。