喔唷网 - 网络从业者技术信息综合门户!

当前位置: 主页 > 教程技术 > 编程语言 > javascript

JavaScript函数 让你的代码学会分身

时间 : 2025-04-23 11:35来源 : 喔唷网作者 : JavaScript函数点击 :
各位代码魔法师们,今天我们要学习编程中最强大的魔法之一——函数!它就像哈利·波特的"分身咒",能让一段代码重复使用,随叫随到!5.1 函数定义与调用 - 创造你的第一个&quo

各位代码魔法师们,今天我们要学习编程中最强大的魔法之一——函数!它就像哈利·波特的"分身咒",能让一段代码重复使用,随叫随到!

5.1 函数定义与调用 - 创造你的第一个"分身"

函数就像一台自动售货机

  • 你投入参数(硬币)
  • 它执行操作(处理)
  • 返回结果(吐出饮料)
// 定义函数
function makeCoffee(type) {
  return `一杯${type}咖啡`;
}

// 调用函数
let myCoffee = makeCoffee("拿铁");
console.log(myCoffee); // 输出:一杯拿铁咖啡

生活小例子

function singSong(name) {
  console.log(`生日快乐,${name}!`);
  console.log("祝你永远开心~");
}

singSong("小明"); // 给小明唱生日歌
singSong("小红"); // 给小红唱同样的歌

5.2 参数与返回值 - 函数的"输入和输出"

参数就像点菜单

function orderFood(food, quantity) {
  console.log(`下单:${quantity}份${food}`);
  return quantity * 10; // 假设每份10元
}

let total = orderFood("汉堡", 3);
console.log(`总价:${total}元`);

特殊参数情况

function showCase(a, b = 10) { // 默认参数
  console.log(a, b);
}

showCase(1);     // 1 10
showCase(1, 2);  // 1 2

5.3 函数表达式 - 匿名函数也精彩

函数可以像变量一样赋值

const sayHi = function(name) {
  console.log(`你好,${name}!`);
};

sayHi("匿名函数"); // 输出:你好,匿名函数!

真实场景应用

// 计算器函数
const calculate = function(a, b, operator) {
  switch (operator) {
    case '+': return a + b;
    case '-': return a - b;
    case '*': return a * b;
    case '/': return a / b;
    default: return NaN;
  }
};

console.log(calculate(5, 3, '+')); // 8

5.4 箭头函数 - 简洁的现代语法

ES6带来的超简洁写法:

// 传统函数
const add = function(a, b) {
  return a + b;
};

// 箭头函数
const add = (a, b) => a + b;

多种写法

// 一个参数可以省略括号
const square = x => x * x;

// 多行代码需要加大括号和return
const greet = name => {
  const message = `Hello, ${name}!`;
  return message;
};

注意:箭头函数没有自己的this,这在后面面向对象时会很重要!

5.5 回调函数 - 函数的"预约服务"

回调函数就是"等会儿再调用的函数":

// 模拟点餐后等餐
function order(callback) {
  console.log("下单中...");
  setTimeout(() => {
    console.log("餐点准备好了!");
    callback();
  }, 2000); // 2秒后执行
}

function eat() {
  console.log("开吃啦!");
}

order(eat); // 把eat函数作为回调传入

实际应用场景

// 模拟下载完成后处理数据
function download(url, success, failure) {
  console.log(`开始下载:${url}`);
  // 模拟网络请求
  setTimeout(() => {
    if (Math.random() > 0.3) { // 70%成功率
      success("下载的数据");
    } else {
      failure("网络错误");
    }
  }, 1000);
}

download(
  "https://example.com/data",
  data => console.log(`处理数据:${data}`),
  err => console.error(`错误:${err}`)
);

5.6 递归函数 - 函数的"俄罗斯套娃"

函数调用自己就是递归:

// 计算阶乘:5! = 5*4*3*2*1
function factorial(n) {
  if (n === 1) return 1; // 终止条件
  return n * factorial(n - 1);
}

console.log(factorial(5)); // 120

趣味例子 - 倒计时

function countdown(n) {
  if (n <= 0) {
    console.log("发射!");
    return;
  }
  console.log(n);
  setTimeout(() => countdown(n - 1), 1000); // 1秒后递归
}

countdown(5); // 5...4...3...2...1...发射!

本章总结

  1. 函数是可重复使用的代码块
  2. 参数是输入,返回值是输出
  3. 函数表达式将函数赋给变量
  4. 箭头函数提供简洁语法
  5. 回调函数用于异步操作
  6. 递归是函数调用自身

实战练习

写一个温度转换函数:

function celsiusToFahrenheit(c) {
  // 转换公式:F = C × 9/5 + 32
  return ?;
}
console.log(celsiusToFahrenheit(25)); // 应该是77
  1. 用递归实现斐波那契数列(1,1,2,3,5,8...第n项)
  2. 创建一个定时任务函数:
function repeatTask(task, times, interval) {
  // task: 回调函数
  // times: 执行次数
  // interval: 间隔毫秒数
}

生活剧场

// 自动做奶茶的工厂函数
function createTeaMaker(teaType) {
  return function(sugarLevel) {
    return `制作一杯${teaType}奶茶,甜度${sugarLevel}%`;
  };
}

const makeMilkTea = createTeaMaker("珍珠");
console.log(makeMilkTea(50)); // 制作一杯珍珠奶茶,甜度50%

下一章我们将进入JavaScript的魔法核心——对象与面向对象编程!准备好解锁更强大的技能了吗?

栏目列表

关联类容

热点推荐

栏目推荐

猜你喜欢