js实现函数
JavaScript 实现函数的基本方法
在 JavaScript 中,函数可以通过多种方式定义和实现。以下是几种常见的函数定义方法:
函数声明
使用 function 关键字直接声明函数:
function greet(name) {
return `Hello, ${name}!`;
}
函数表达式 将函数赋值给变量:
const greet = function(name) {
return `Hello, ${name}!`;
};
箭头函数 ES6 引入的简洁语法:
const greet = (name) => `Hello, ${name}!`;
函数参数处理
JavaScript 函数支持默认参数和剩余参数:
默认参数 为参数提供默认值:
function greet(name = 'Guest') {
return `Hello, ${name}!`;
}
剩余参数
使用 ... 收集多个参数:
function sum(...numbers) {
return numbers.reduce((a, b) => a + b, 0);
}
高阶函数
函数可以作为参数传递或作为返回值:
作为参数
function operate(a, b, operation) {
return operation(a, b);
}
const result = operate(5, 3, (x, y) => x * y);
作为返回值
function multiplier(factor) {
return x => x * factor;
}
const double = multiplier(2);
立即执行函数
定义后立即执行的函数表达式:
(function() {
console.log('This runs immediately');
})();
生成器函数
使用 function* 定义的可以暂停执行的函数:
function* idGenerator() {
let id = 1;
while(true) {
yield id++;
}
}
const gen = idGenerator();
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
异步函数
使用 async/await 处理异步操作:
async function fetchData(url) {
const response = await fetch(url);
return await response.json();
}
函数绑定
使用 bind 方法设置函数上下文:
const person = {
name: 'Alice',
greet: function() {
console.log(`Hello, ${this.name}`);
}
};
const greet = person.greet.bind(person);
greet(); // Hello, Alice
函数柯里化
将多参数函数转换为一系列单参数函数:

function curry(fn) {
return function curried(...args) {
if(args.length >= fn.length) {
return fn.apply(this, args);
} else {
return function(...args2) {
return curried.apply(this, args.concat(args2));
}
}
};
}
const sum = (a, b, c) => a + b + c;
const curriedSum = curry(sum);
console.log(curriedSum(1)(2)(3)); // 6






