javascript中函数的区别

时间:2018-03-26 11:08:42

标签: javascript node.js

我是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);

//...
 //...
});

请帮帮我..

3 个答案:

答案 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',它是调用它的对象。