返回

函数表达式和函数声明简介

前端

在 JavaScript 中,函数是通过使用 function 来创建的。函数可以是函数表达式或函数声明。函数表达式是一个匿名的函数,而函数声明是一个命名的函数。

函数表达式

函数表达式是一个没有名字的函数。它可以使用 var、let 或 const 关键字来声明。例如:

// 使用 var 关键字声明函数表达式
var greet = function() {
  console.log("Hello, world!");
};

// 使用 let 关键字声明函数表达式
let greet = function() {
  console.log("Hello, world!");
};

// 使用 const 关键字声明函数表达式
const greet = function() {
  console.log("Hello, world!");
};

函数表达式可以被赋给变量,也可以作为参数传递给另一个函数。例如:

// 将函数表达式赋给变量
var greet = function() {
  console.log("Hello, world!");
};

// 将函数表达式作为参数传递给另一个函数
function sayHello(fn) {
  fn();
}

sayHello(greet); // 输出:Hello, world!

函数声明

函数声明是一个命名的函数。它使用 function 关键字和函数名来声明。例如:

// 函数声明
function greet() {
  console.log("Hello, world!");
}

// 调用函数
greet(); // 输出:Hello, world!

函数声明可以被提升到作用域的顶部,这意味着它们可以在声明之前被调用。例如:

// 函数声明
greet(); // 输出:Hello, world!

function greet() {
  console.log("Hello, world!");
}

函数表达式和函数声明的区别

函数表达式和函数声明之间最主要的区别是函数表达式是匿名的,而函数声明是命名的。这意味着函数表达式不能被提升到作用域的顶部,也不能被用作构造函数。

箭头函数

箭头函数是 ES6 中引入的一种新的函数语法。箭头函数本质上是匿名函数的语法糖,和上面的函数表达式一样,可以被赋予变量,传入另一个函数作为参数,甚至直接使用。但是,箭头函数省略了 function 关键字,使用 => 箭头来代替。例如:

// 箭头函数
const greet = () => {
  console.log("Hello, world!");
};

// 调用函数
greet(); // 输出:Hello, world!

箭头函数还有一些其他特性,例如:

  • 箭头函数没有自己的 this 关键字,它会继承外层函数的 this 关键字。
  • 箭头函数不能使用 arguments 对象,需要使用 rest 参数代替。
  • 箭头函数不能使用 yield 关键字,因此不能用作生成器函数。

结论

函数是 JavaScript 中的重要组成部分。函数表达式和函数声明是创建函数的两种方式。函数表达式是匿名的,而函数声明是命名的。箭头函数是 ES6 中引入的一种新的函数语法,它本质上是匿名函数的语法糖。在实际使用中,你可以根据需要选择合适的函数类型来编写代码。