JavaScript 解释在function foo() {}和var foo = function() {}之间使用foo时的区别

JavaScript 解释在function foo() {}和var foo = function() {}之间使用foo时的区别

这里我们可以看到在JavaScript中, function foo() {}var foo = function() {} 这两种函数声明类型下使用foo的区别。

function foo() {} 是普通的函数声明方式,每个用户或开发者都觉得它更简单,可以在需要的时候声明和使用。

var foo = function() {} 是匿名函数声明或表达式的函数。它通过一个变量来封装,换句话说,可以理解为它是一个将函数包装在内部的变量,因此该变量不再保持变量状态,最终成为一个可以访问的函数本身,实际上称为普通的函数调用在JavaScript中发生。现在让我们看看区别:

1. 通过名称:

当我们在函数名之前使用关键字 function 时,这被称为普通函数或函数声明。

当我们在没有函数名的情况下使用关键字 function 时,这被称为匿名函数或表达式函数。

普通函数或函数声明:

这里foo是函数名。

function foo() {
    // Function Body
} 

匿名函数或表达式函数: 在这里,函数在变量 foo 中存储,使用var关键字。

var foo = function() {
    // Function Body
}

我们经常将匿名函数写成箭头函数,这是由ES6引入的(推荐)。

var foo = () => {
    // Function Body
}

同时,在初始化箭头函数时,我们也可以使用let关键字,其语法如下所示:

let foo = () => {
    // Function Body
}

2. 实现: 在这里,我们看到如何在正常 函数 和 匿名函数 中调用 该函数 。当调用任何普通 函数 或 匿名函数 (包裹在任何变量内部)时,调用方式与调用普通 函数 相似。

Normal Function 或 Function Declaration: 在这里,我们使用 **** 函数的 名称 “foo” 来调用整个 函数 。

Javascript

<script>
    function foo() {
      console.log("hello");
    };
     
    foo();
</script>

输出:

hello

在这里我们可以在声明或者定义函数之前调用函数“foo”。这意味着我们可以在代码中的任何位置声明或者定义函数。

Javascript

<script>
foo(); 
 
function foo() {
  console.log("hello");
};
</script>

输出:

hello

匿名函数或表达式函数: 在这里我们使用变量foo来调用整个函数。

Javascript

<script>
    var foo = function() {
        console.log("hello");
    };
     
    foo();
</script>

输出:

hello

在声明函数之前调用函数将引发错误。

Javascript

<script>
    foo();
     
    var foo = function() {
      console.log("hello");
    };
</script>

输出:

TypeError: foo is not a function 

现在让我们来看一下下面的实现,这个实现是使用 Arrow Function 语法(在 ES6 中实现)。

JavaScript

let foo  = () => {
    console.log("Hello World...!!");
}
 
foo();
 
// This code is contributed by Aman Singla....

输出:

Hello World...!!

3. 传递参数: 在这里,我们将看到如何在函数内传递参数。

普通函数或函数声明: 在这里,我们只有在调用整个函数时才传递参数,通过函数名。 ****

Javascript

<script>
    function foo(x,y) {
      console.log(x+y);
    };
     
    foo(1,3);
</script>

输出:

4

匿名函数或表达式函数: 在这里,我们只会在通过变量名调用整个函数时传递参数。

Javascript

<script>
    var foo = function(x,y) {
      console.log(x+y);
    };
     
    foo(1,3);
</script>

输出:

4

以下是使用箭头函数实现上面代码片段的语法:

Javascript

let foo  = (x , y) => {
    console.log(x + y);
}
 
foo( 7 , 8);
 
// This code is contributed by Aman Singla....

输出:

15

4. 自执行函数: 这里,当函数被创建时,函数会立即调用。我们使用匿名函数。

JavaScript

<script>
    (function(x,y){
      console.log(x+y);
    })
     
    (2,3);
</script>

输出:

5

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程