我来自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; });
有人解释为什么使用它或者它是否做了正常功能以外的任何东西?
感谢。
答案 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对象的一部分,但它是一个函数,所以你传入的参数,其中一些可以是一个函数。
答案 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");
});
此代码将为按钮添加一个监听器,当点击触发时,它将调用回调函数。