函数基础
在编程中,函数是组织代码的核心单元,能够封装逻辑、复用代码并提高可维护性。JavaScript的函数具有灵活的特性,支持多种定义和调用方式,理解其基础概念是深入语言的关键。
函数的定义与声明
JavaScript中函数可以通过函数声明或函数表达式定义。函数声明会提升(hoisting),允许在定义前调用;而函数表达式则不会。
// 函数声明
function greet(name) {
return `Hello, ${name}!`;
}
// 函数表达式
const greet = function(name) {
return `Hello, ${name}!`;
};
箭头函数是ES6引入的简洁语法,适合匿名场景:
const greet = (name) => `Hello, ${name}!`;
参数与返回值
函数参数支持默认值,ES6之后可直接在参数列表中指定:
function createUser(name, role = 'user') {
return { name, role };
}
console.log(createUser('Alice')); // { name: 'Alice', role: 'user' }
返回值通过return
传递,未显式返回时默认得到undefined
:
function noReturn() {}
console.log(noReturn()); // undefined
作用域与闭包
函数作用域限定变量的访问范围。闭包允许函数访问其词法作用域外的变量:
function outer() {
let count = 0;
return function inner() {
count++;
return count;
};
}
const counter = outer();
console.log(counter()); // 1
console.log(counter()); // 2
高阶函数
接受或返回其他函数的函数称为高阶函数,常见于数组方法:
const numbers = [1, 2, 3];
const doubled = numbers.map(num => num * 2); // [2, 4, 6]
立即调用函数表达式(IIFE)
IIFE在定义时立即执行,用于创建独立作用域:
(function() {
console.log('立即执行');
})();
递归函数
函数调用自身的模式称为递归,需注意终止条件:
function factorial(n) {
if (n === 1) return 1;
return n * factorial(n - 1);
}
console.log(factorial(5)); // 120
函数的方法与属性
函数作为对象,拥有call
、apply
、bind
等方法:
function showInfo(age, city) {
console.log(`${this.name}, ${age}, ${city}`);
}
const user = { name: 'Bob' };
showInfo.call(user, 30, 'New York'); // Bob, 30, New York
异步函数
ES2017引入async/await
简化异步操作:
async function fetchData() {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
return data;
}
本站部分内容来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了你的权益请来信告知我们删除。邮箱:cc@cccx.cn