世界上什么是Javascript中的内联函数以及哪些情况会促使其使用?

时间:2017-08-09 21:20:56

标签: javascript function inline

以下是Udacity给出的示例:

var favoriteMovie = function displayFavorite(movieName) {
  console.log("My favorite movie is " + movieName);
};

function movies(messageFunction, name) {
  messageFunction(name);
}

movies(favoriteMovie, "Finding Nemo");

返回:我最喜欢的电影是海底总动员。

  1. 这两个功能如何相关?
  2. 为什么有人会选择这种类型的编码去做一些看起来更简单的事情呢?我只是不明白,需要一个比我从课程中得到的更全面的答案。

2 个答案:

答案 0 :(得分:0)

传递函数的规范示例是允许使用单个算法对多种方式进行排序。你可能有:

function compare(a, b) {
    return a < b;
}

在一个案例中按升序排序并且:

function compare(a, b) {
    return a.name > b. name;
}

按名称按降序排序。然后你只需要编写一个排序算法来传递比较函数。

答案 1 :(得分:0)

正如Carcigenicate所说,这些不是内联函数的一个例子。内联函数是函数表达式。您所做的是函数语句的示例。

以下是内联函数的示例:

 console.log(function(movieName){
        return("My favorite movie is " + movieName);
    }("Finding Nemo"));

关于函数语句,如在您的示例中,它们通常用于抽象。从书Eloquent JavaScript, Chapter 5

  

<强>抽象

     

在编程环境中,通常会使用这些类型的词汇表   称为抽象​​。抽象隐藏细节并为我们提供能力   在更高(或更抽象)的层面上讨论问题。

     

作为类比,比较这两种豌豆汤的配方:

     
    

每人将1杯干豌豆放入容器中。加水直到     豌豆被很好地覆盖了。将豌豆留在水中至少12     小时。将豌豆从水中取出并放入烹饪锅中。     每人加4杯水。盖上锅,保持豌豆     憋了两个小时。每人半个洋葱。切成碎片     用刀子。加入豌豆。每个人吃一根芹菜     人。用刀切成碎片。加入豌豆。拿一个     每人胡萝卜。把它切成碎片。用刀!把它添加到     豌豆。再煮10分钟。

  
     

第二个食谱:

     
    

每人:1杯干豌豆,半切碎的洋葱,一根茎     芹菜和胡萝卜。

         

浸泡豌豆12小时。在4杯水中煮2小时(每次     人)。切碎并加入蔬菜。再煮10分钟。

  
     

第二个更短,更容易解释。但你确实需要   了解一些与烹饪相关的词 - 浸泡,煨,剁,和我   猜,蔬菜。

     

编程时,我们不能依赖我们需要等待的所有单词   对于我们在字典中。因此,你可能会陷入这种模式   第一个配方 - 计算出计算机必须执行的精确步骤,   一个接一个地对他们所表达的更高层次的概念视而不见。

     

对于程序员来说,它必须成为第二天性   乞求被抽象成一个新词。