阿里云主机折上折
  • 微信号
您当前的位置:网站首页 > 函数基础

函数基础

作者:陈川 阅读数:24484人阅读 分类: JavaScript

在编程中,函数是组织代码的核心单元,能够封装逻辑、复用代码并提高可维护性。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

函数的方法与属性

函数作为对象,拥有callapplybind等方法:

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

上一篇:定时器与延时器

下一篇:作用域与闭包

前端川

前端川,陈川的代码茶馆🍵,专治各种不服的Bug退散符💻,日常贩卖秃头警告级的开发心得🛠️,附赠一行代码笑十年的摸鱼宝典🐟,偶尔掉落咖啡杯里泡开的像素级浪漫☕。‌