网站

JavaScript 函数

函数 - JavaScript | MDN

引入

自定义函数就是自己给一段代码起名字,把它封装成一个可以重复使用的功能。

当一段代码会多次使用,或者一段逻辑比较独立时,就可以写成自定义函数。

正文

定义

定义

自定义函数是开发者自己创建的函数,用来封装某个具体功能,需要时通过函数名调用。

JS 内置了很多函数,比如 console.log()。自定义函数就是自己写一个类似的工具。

语法

function 函数名(参数) {
  // 函数体
  return 返回值;
}

例如:

function sayHello() {
  console.log("你好");
}
 
sayHello();

sayHello 是自己定义的函数名,sayHello() 是调用这个函数。

为什么需要自定义函数

如果没有函数,重复逻辑就要写很多遍。

console.log("你好,Tom");
console.log("你好,Jerry");
console.log("你好,Lucy");

写成函数后,可以复用同一段逻辑。

function sayHello(name) {
  console.log("你好," + name);
}
 
sayHello("Tom");
sayHello("Jerry");
sayHello("Lucy");

这样代码更清楚,也方便后面修改。

函数名

函数名用来说明这个函数做什么。

function getUserName() {
  return "Tom";
}

函数命名建议:

  • 使用有意义的名字
  • 通常使用驼峰命名法,例如 getUserName
  • 动作类函数可以用动词开头,例如 getsetshowcreate

不要写太随意的名字:

function a() {
  console.log("学习 JS");
}

这种名字看不出函数作用。

参数

参数可以让自定义函数更灵活。

function add(a, b) {
  return a + b;
}
 
console.log(add(1, 2));
console.log(add(10, 20));

ab 是参数,不同调用可以传入不同数据。

如果函数内部需要外部数据,通常就可以用参数传进去。

返回值

如果函数需要把结果交给外面继续使用,就用 return

function getTotal(price, count) {
  return price * count;
}
 
let total = getTotal(10, 3);
 
console.log(total);

这里 getTotal(10, 3) 返回 30,然后保存到 total 中。

如果只是执行一个动作,不一定需要 return

function showMessage() {
  console.log("保存成功");
}
 
showMessage();

封装页面操作

自定义函数经常用来封装页面操作。

<p class="text">旧内容</p>
<button id="btn">修改</button>
const text = document.querySelector(".text");
const btn = document.querySelector("#btn");
 
function updateText() {
  text.textContent = "新内容";
}
 
btn.addEventListener("click", updateText);

这里 updateText() 是自己定义的函数,点击按钮时执行它。

拆分逻辑

自定义函数也可以用来拆分复杂逻辑。

function getTotal(price, count) {
  return price * count;
}
 
function showTotal(total) {
  console.log("总价是:" + total);
}
 
let total = getTotal(10, 3);
showTotal(total);

可以把不同职责拆开:

  • getTotal():负责计算数据
  • showTotal():负责显示结果

常见写法

写法作用
function fn() {}自定义一个函数
fn()调用自定义函数
function fn(a, b) {}定义带参数的函数
return result;返回函数处理结果
btn.addEventListener("click", fn);把函数作为事件处理逻辑

特点

  • 自定义函数是自己创建的函数
  • 函数名应该能看出功能
  • 函数声明后不会自动执行,需要调用
  • 参数可以让函数处理不同数据
  • return 可以把结果交给外部继续使用
  • 重复代码适合封装成函数
  • 一个函数最好只负责一个相对明确的功能

理解

自定义函数可以理解为自己做工具。

如果某段代码以后还会用,或者这段逻辑有明确作用,就可以把它做成一个函数。

参数是给工具的材料,return 是工具处理完交回来的结果。

我理解自定义函数的重点是:把重复的、独立的逻辑封装起来,让代码更好读、更好改

引出

理解了自定义函数之后,可以继续学习 JS 函数调用方式,看看函数在不同场景下是怎么被调用的。

后续也可以学习 JS 作用域JS 闭包,理解函数内部和外部变量之间的关系。