我是node.js的新手,我几乎每个地方都看到了2函数。请解释一下function greet()
&之间的区别。 greet(function(){});
示例
这样可以清楚地理解。
function greet() {
this.firstname = 'johan',
this.lastname = 'Don'
console.log(this.firstname + ' ' + this.lastname);
//...
//...
}
greet(function() {
this.firstname = 'johan',
this.lastname = 'Don'
console.log(this.firstname + ' ' + this.lastname);
//...
//...
});
请帮帮我..
答案 0 :(得分:1)
确定。让我尝试。
第一个是功能声明。这意味着我们定义了一些命名函数。
第二个是使用名为greet的函数,您将匿名函数作为参数传递。
匿名函数是没有名字的函数。
主要区别在于,在第一种情况下,您可以调用一个函数来执行所描述的作业。在第二种情况下,您将函数传递给外部代码,并且无法控制何时执行传递函数。
希望这有帮助。
这与Node.Js无关,而与纯JavaScript无关。 其他信息可以在here
找到答案 1 :(得分:0)
函数声明由函数关键字组成,后跟强制函数名称,一对括号(para1,...,paramN)中的参数列表和一对限定的花括号{...}身体代码。
// function declaration
function isEven(num) {
return num % 2 === 0;
}
isEven(24); // => true //Execution of function
isEven(11); // => false
在这里你可以看到函数isEven {..}函数声明,它定义了isEven函数,它确定一个数字是否是偶数。
greet(function(){});
只是一个greet 函数调用带有回调函数,只要执行了greet函数,如果你想在执行后发生一些事情,就可以在其中传递和定义处理回调函数使其工作
function greet() {
this.firstname = 'johan',
this.lastname = 'Don'
console.log(this.firstname + ' ' + this.lastname);
//...
//...
}
将更改为
function greet(callBack) {//function as parameter received
this.firstname = 'johan',
this.lastname = 'Don'
console.log(this.firstname + ' ' + this.lastname);
//...
//...
callBack()//callback function called
}
调用的回调函数将执行你在回调中完成的代码。 refer link for understanding callback
答案 2 :(得分:0)
在你的第二个例子中,作为参数传递的函数没有意义(因为它永远不会被执行)。 但是,第二个示例中的语法是Higher Order Functions:将回调作为参数的函数。
例如Array.prototype.map是一个更高阶的函数。它遍历给定数组的所有单元格,并对数组中的每个项目应用给定的回调函数。
let x = ['a','b'];
let y = x.map(function(item,i){return item+i;});
//y = ['a0','b1']
关于回调的'this',它是调用它的对象。