在 JavaScript 中,函数表达式和箭头函数是定义函数的两种常见方式。
函数表达式:
函数表达式是将一个函数赋值给一个变量的方式
函数表达式的一般形式是:
let functionName = function([parameters]) {
// 函数体
[return statement]
};
简单的函数表达式的示例
let add = function(a, b) {
return a + b;
};
console.log(add(2, 3));
函数表达式有以下几种常见的方式:
- 匿名函数表达式:
-
let myFunction = function() { console.log('This is an anonymous function expression.'); };
- 具名函数表达式:
-
let myNamedFunction = function namedFunction() { console.log('This is a named function expression.'); };
- 带参数的函数表达式:
-
let multiply = function(a, b) { return a * b; };
- 立即执行函数表达式(IIFE - Immediately Invoked Function Expression):
-
(function() { console.log('This is an immediately invoked function expression.'); })();
- 带参数的立即执行函数表达式:
-
(function(a, b) { console.log(a + b); })(2, 3);
箭头函数:
箭头函数是一种更简洁的函数定义方式。
箭头函数的基本语法如下:
(params) => { expression }
或者,如果函数体只有一条表达式,可以简化为:
(params) => expression
箭头函数的示例:
let arrowFunction = () => {
console.log('Hello from arrow function!');
};
// 如果函数体只有一条语句,可以省略花括号和 return 关键字
let simpleArrowFunction = () => console.log('Simple arrow function!');
// 带参数的箭头函数
let parameterizedArrowFunction = (param) => {
console.log(`Hello, ${param}!`);
};
常见的方式:
- 无参数且无返回值:
-
let func1 = () => { console.log('Hello!'); };
- 无参数但有返回值:
-
let func2 = () => 42;
- 一个参数:
-
let func3 = x => x * 2;
- 多个参数:
-
let func4 = (x, y) => x + y;
- 多个参数且函数体有多条语句:
-
let func5 = (x, y) => { let sum = x + y; return sum * 2; };
- 作为回调函数:
-
[1, 2, 3].map(x => x * 2);
箭头函数的主要特点包括:
- 更简洁的语法。
- 没有自己的
this
、arguments
、super
或new.target
。箭头函数中的this
继承自外部作用域。