函数:声明、表达式与箭头函数
用三种方式定义函数,了解提升,使用参数和返回值,并编写简洁的箭头函数。
函数:声明、表达式与箭头函数 是 CoddyKit 上的免费 Frontend Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Frontend Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Frontend Academy 课程共包含 4 节课。
什么是函数
函数是可重复使用的代码块。它们接收输入(参数)、执行逻辑,并可选择返回输出。函数在 JavaScript 中是一等值,可以赋给变量、作为参数传入,也可以由其他函数返回。
函数声明
函数声明使用 function 关键字创建命名函数。声明会被提升,因此您可以在它们出现在代码之前调用它们。
function greet(name) {
return `Hello, ${name}!`;
}
// Can call before declaration due to hoisting:
console.log(greet('Alice')); // 'Hello, Alice!'函数表达式
函数表达式会将函数赋给变量。它不会被提升(变量会被提升为 undefined)。函数表达式可以是匿名的,也可以是命名的。
const multiply = function(a, b) {
return a * b;
};
console.log(multiply(3, 4)); // 12
// Named function expression (name useful in stack traces):
const factorial = function fact(n) {
return n <= 1 ? 1 : n * fact(n - 1);
};箭头函数
箭头函数是 ES6 引入的简洁语法。它们没有自己的 this,而是从外层作用域继承 this。它们非常适合回调和简短函数。
// Standard arrow:
const add = (a, b) => a + b;
// Single parameter (no parens needed):
const double = n => n * 2;
// No parameters:
const greet = () => 'Hello!';
// Multi-line body needs {} and return:
const process = (x) => {
const result = x * 2;
return result + 1;
};参数与实参
参数是函数定义中列出的名称。实参是调用函数时传入的值。多余的实参会被忽略;缺少的实参是 undefined。
function info(name, age) {
console.log(`${name} is ${age}`);
}
info('Alice', 30); // 'Alice is 30'
info('Bob'); // 'Bob is undefined'默认参数
ES6 允许您为参数设置默认值。当实参为 undefined 时(包括完全未传入实参的情况),就会使用默认值。
function greet(name = 'World') {
return `Hello, ${name}!`;
}
console.log(greet()); // 'Hello, World!'
console.log(greet('Alice')); // 'Hello, Alice!'return 语句
函数默认返回 undefined。请使用 return 输出值。函数执行到遇到的第一个 return 时就会退出,后续代码不会执行。
function divide(a, b) {
if (b === 0) return null; // early return
return a / b;
}
console.log(divide(10, 2)); // 5
console.log(divide(10, 0)); // null剩余参数
剩余参数 ...args 会将所有剩余实参收集到一个数组中。它必须是最后一个参数。在现代代码中,它取代了旧式的 arguments 对象。
function sum(...numbers) {
return numbers.reduce((total, n) => total + n, 0);
}
console.log(sum(1, 2, 3, 4)); // 10作为值的函数(一等公民)
函数可以存储在变量中,可以作为参数传给其他函数(回调),也可以由函数返回。这支持数组方法和事件监听器等强大模式。
const numbers = [3, 1, 4, 1, 5];
const sorted = numbers.sort((a, b) => a - b); // callback
console.log(sorted); // [1, 1, 3, 4, 5]纯函数
纯函数对于相同的输入总是返回相同的输出,并且没有副作用(不修改 DOM、不发起网络调用、不修改全局状态)。纯函数易于测试、调试和理解。
// Pure:
const add = (a, b) => a + b;
// Impure (side effect: mutates external state):
let total = 0;
function addToTotal(n) { total += n; }立即调用的函数表达式(IIFE)
IIFE 在定义时会立即运行。过去常用于创建私有作用域。如今由于模块和块级作用域的存在,对它的需求减少了,但在较旧的代码库中仍然可以看到它。
(function () {
const secret = 'hidden';
console.log('IIFE ran');
})();
// secret is not accessible here快速检查
以下关于箭头函数的说法哪一项是正确的?
回顾:JavaScript 函数
函数声明会被提升。函数表达式和箭头函数不会被提升。箭头函数简洁,并且没有自己的 this。请使用默认参数处理缺少的实参。函数是一等值,可以自由地传递它们。
常见问题解答
「函数:声明、表达式与箭头函数」课时是免费的吗?
是的 — 「函数:声明、表达式与箭头函数」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Frontend Academy 课程的其余内容,请升级到 CoddyKit PRO。 Frontend Academy 课程共包含 4 节课。
「函数:声明、表达式与箭头函数」这节课中我会学到什么?
用三种方式定义函数,了解提升,使用参数和返回值,并编写简洁的箭头函数。 你通过在浏览器中直接运行的动手代码来练习 Frontend Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Frontend Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Frontend Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「函数:声明、表达式与箭头函数」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Frontend Academy 课中编写并运行代码吗?
能。每节 Frontend Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 变量:let、const、var 与作用域
- 数据类型:string、number、boolean、null、undefined
- 函数:声明、表达式与箭头函数
- 控制流:if、else、switch、for、while