Javascript函数内部参数?

时间:2016-01-05 00:28:02

标签: javascript angularjs function parameters arguments

我来自C / C#/ Java和PHP的背景,所以我习惯于那些使用函数(参数)定义函数的编码标准{... return x}

但是最近我一直在学习像Angular / Node这样的JS库,并且在参数中遇到了另外一个函数(或者可能没有?),如下所示:

app.controller('MainController', ['$scope', 'forecast', function($scope,     forecast) {
forecast.success(function(data) {
$scope.fiveDay = data;
});
}]);

app.factory('forecast', ['$http', function($http) { 
return $http.get('https://s3.amazonaws.com/codecademy-    content/courses/ltp4/forecast-api/forecast.json') 
        .success(function(data) { 
          return data; 
        }) 
        .error(function(err) { 
          return err; 
        }); 
 }]);

这让我很困惑,反对我对功能的了解。此约定仅用于脚本语言吗?我好像他们走了

function(parameter, function(parameter) { do something; }); 

有人解释为什么使用它或者它是否做了正常功能以外的任何东西?

感谢。

4 个答案:

答案 0 :(得分:1)

在Javascript中,变量可以返回一个函数,它可以返回另一个函数,几乎是无休止的。

例如:

var myFunction = function() {
    return getAnswer();
}

var getAnswer = function() {
    return "Hello world!";
}

的console.log(myFunction的);将返回

  

var myFunction = function(){         return getAnswer();       }

和console.log(myFunction());将返回

  

“Hello world!”

所以App.controller是一个变量,它是app对象的一部分,但它是一个函数,所以你传入的参数,其中一些可以是一个函数。

https://jsfiddle.net/Lu46sf2v/2/

答案 1 :(得分:0)

是一种将函数作为参数传递给另一个函数的方法。在C中,您可以定义一个函数,然后将其作为指针传递给另一个函数。在Javascript中,您可以在那里定义函数。 C#也可以这样做。

答案 2 :(得分:0)

在javascript中,函数是第一类对象,这意味着您可以将参数附加到它们,重命名它们,动态创建它们,或者像普通对象一样传递它们。

例如,在node.js中,大多数库指定在某些操作完成后要调用的函数。您可以按名称将其指向现有函数,也可以将其设置为匿名函数并将其填入参数中。

答案 3 :(得分:0)

在Javascript中,函数是第一类函数,这意味着您可以将函数作为参数传递,或者在函数内返回一个新函数。

你所看到的是一个回调,你接收该函数作为一个参数,并在你需要的时候执行。

例如:单击按钮时将调用的函数

var btn = document.querySelector('btn');

btn.addEventListener('click', function() {
    alert("I was clicked");
});

此代码将为按钮添加一个监听器,当点击触发时,它将调用回调函数。