【问题标题】:I am learning javascript and i'm stuck with the concept of function returning function我正在学习 javascript,我坚持函数返回函数的概念
【发布时间】:2017-01-10 21:50:54
【问题描述】:

请帮我看看下面的代码。我不明白return function(object1,object2)的功能。create compare function()中的return function如何获取它的参数。? p>

var data = [{ name: "Zachary", age: 28}, {name: "Nicholas", age: 29}];

function createComparisonFunction( propertyName) 
{
   return function( object1, object2)
   { 
     var value1 = object1[ propertyName]; 
     var value2 = object2[ propertyName]; 
     if (value1 < value2)
     { 
       return -1; 
     } 
     else if (value1 > value2)
     { 
       return 1; 
     }
     else 
     { 
       return 0; 
     } 
   }; 
}
data.sort( createComparisonFunction(" name")); 
alert( data[ 0]. name); // Nicholas 
data.sort( createComparisonFunction(" age"));
alert( data[ 0]. name); // Zachary

【问题讨论】:

  • “帮助你”如何到底是什么?您遇到了什么问题?
  • 我认为他在问那行代码的作用。我也很想知道答案。
  • 我希望大卫现在明白他可以如何提供帮助

标签: nested-function


【解决方案1】:

您可以假设sort 函数类似于以下代码。

function sort( comparefunction )
{
  ...
  if ( comparefunction(obj1, obj2 ){
    // do stuff
  }
}

现在因为comaprefunction 本身类似于createComparisonFunction("name"),所以你最终会得到这样的东西: createComparisonFunction("name")(obj1, obj2) 其中namecreateComparisonFunction 的输入,obj1, obj2 是无名函数的输入。

【讨论】:

    【解决方案2】:

    sort() 方法比较两个值时,会将值发送给比较函数,并根据返回的(负、零、正)值对值进行排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 2011-06-25
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      相关资源
      最近更新 更多