具名函数
具名函数是有名称的函数,可以在定义之前或之后调用。
特点
- 有函数名。
- 定义后可以多次调用。
- 便于调试,因为在调用栈中可以看到函数名。
function add(a, b) {return a + b;
}console.log(add(2, 3)); // 输出: 5
匿名函数
匿名函数没有名称,通常用作回调函数或立即执行函数。
特点
- 没有函数名。
- 通常在需要一个短小的函数时使用,比如作为参数传递给其他函数。
函数表达式
const multiply = function(a, b) {return a * b;
};console.log(multiply(2, 3)); // 输出: 6
作为回调函数
const numbers = [1, 2, 3, 4];
const doubled = numbers.map(function(number) {return number * 2;
});console.log(doubled); // 输出: [2, 4, 6, 8]
方法
方法是类中的函数,通常操作类的实例数据。
特点
- 定义在类内部。
- 第一个参数通常是
self
,代表实例本身。 - 可以访问和修改实例属性。
const calculator = {add: function(a, b) {return a + b;},subtract(a, b) {return a - b;}
};console.log(calculator.add(5, 3)); // 输出: 8
console.log(calculator.subtract(5, 3)); // 输出: 2
Promise 对象的异步操作
then
方法接受两个回调函数作为参数,第一个处理成功的结果,第二个处理失败的结果。
fetch('https://api.example.com/data').then(response => response.json()).then(data => {console.log(data);}).catch(error => {console.error('Error:', error);});
总结
具名函数 | 都是函数,可以接收参数并返回值。 | 有名称,可以在定义之前调用(函数声明提升)。 | 当函数需要在多个地方调用,并且需要函数名称来提高代码可读性时使用。 |
匿名函数 | 都是函数,可以接收参数并返回值。 | 没有名称,通常用作回调函数或立即执行函数。 | 当函数只在一个地方使用,特别是作为回调函数时使用。 |
方法 | 都是函数,可以接收参数并返回值。 | 是对象的属性,定义在对象或类中。 | 当函数属于某个对象或类,并且需要在对象上下文中调用时使用。 |