JavaScript之函数进阶详解
函数的三种表现形式
JavaScript中的函数有三种表现形式:函数声明、函数表达式和箭头函数。其中,函数声明和函数表达式是最常见的形式。
函数声明
函数声明语法如下:
function functionName(parameter1, parameter2, ...parameterN) {
// function body
return result;
}
其中,参数可以有多个,用逗号隔开。函数体内可以包含任意合法的JavaScript语句,也可以不包含任何语句。如果函数体内有return语句,那么返回值就是该语句中指定的值。如果没有return语句,返回值为undefined。
示例:
function sum(a, b) {
return a + b;
}
console.log(sum(1, 2)); // 3
函数表达式
函数表达式语法如下:
const functionName = function(parameter1, parameter2, ...parameterN) {
// function body
return result;
}
其中,const关键字表示常量,即将一个函数赋值给一个常量。在函数表达式中,函数名是可选的,并且函数的声明会被提升(即在函数表达式所在的代码块之前就已经可用)。
示例:
const sum = function(a, b) {
return a + b;
}
console.log(sum(1, 2)); // 3
箭头函数
箭头函数是ES6引入的新特性,语法如下:
const functionName = (parameter1, parameter2, ...parameterN) => {
// function body
return result;
}
箭头函数的参数、函数体以及返回值的说明和函数表达式基本相同,区别在于箭头函数没有自己的this关键字,this指向其定义时所在的作用域。
示例:
const sum = (a, b) => {
return a + b;
}
console.log(sum(1, 2)); // 3
函数作为参数
JavaScript中的函数可以作为参数传递给其他函数,这是实现函数式编程的重要手段。
示例1:实现一个forEach函数
const forEach = (array, fn) => {
for (let i = 0; i < array.length; i++) {
fn(array[i]);
}
}
const numbers = [1, 2, 3, 4];
forEach(numbers, (number) => {
console.log(number);
});
示例2:实现一个map函数
const map = (array, fn) => {
const result = [];
for (let i = 0; i < array.length; i++) {
result.push(fn(array[i]));
}
return result;
}
const numbers = [1, 2, 3, 4];
const doubeldNumbers = map(numbers, (number) => {
return number * 2;
});
console.log(doubeldNumbers); // [2, 4, 6, 8]
函数柯里化
函数柯里化是指将一个多参数的函数转换成一系列单参数函数的过程。柯里化可以让函数更灵活,更容易组合使用。
示例:实现一个柯里化的add函数
const add = (a) => {
return (b) => {
return a + b;
}
}
console.log(add(1)(2)); // 3
函数闭包
函数闭包是指一个函数可以访问外部函数中的变量,并且在函数调用结束后,这些变量的值不会被销毁。
示例:实现一个计数器函数
const counter = () => {
let count = 0;
return () => {
count++;
console.log(count);
}
}
const count = counter();
count(); // 1
count(); // 2
count(); // 3
以上就是JavaScript函数进阶的详细讲解,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript之函数进阶详解 - Python技术站