- Objective:
- Breadcrumb:
# 概念阐释
## 语义
- **定义**:函数是一段可执行的代码快,它可以接受参数,在执行特定的语句后,返回一个结果。这样的好处重复调用同一个任务,而不需要每次遇到相同任务时都重写代码。
- 函数通常**包括**:
- 函数名
- 参数
- 需要执行的内部代码逻辑
- **调用参数 function calling**:使用编辑好的函数来实现软件的功能。
- **重要性**:函数可以说是编程的“灵魂”之一,太多时候我们需要反复用到同样的代码逻辑,函数大大提升了代码的可读性和可维护性。不用函数,所有代码会混成一团。
## 语法
### 函数声明
```js
function sayHello(){
return "Hello"
};
```
- `function` 为关键字
- `sayHello()`为函数名,也叫identifier标识符
- `{}` 花括号中包括函数需要执行的任务的分解步骤,也叫**function body**
### 函数表达式
函数可以是匿名函数
```js
const square = function (num) {
return num*num;
}
```
### 箭头函数
^b3b059
ES6支持函数的=>语法
```js
//箭头写法
const calculateArea = (width,height) => {
const area = width*height;
return area;
}
//单个行参数,单个代码块,省略括号和return
const count = number => number + number;
```
在使用箭头函数时不能使用[[js objects this|this]]值,但可以用过将`this`赋值给一个变量来解决。
```js
function Person(){
this.age = 0;
setInterval(() => {
this.age++; // 这里的`this`正确地指向 person 对象
}, 1000);
}
var p = new Person();
```
### 调用函数


- 函数可被无限次调用
- 调用函数的步骤:
1. 存储完成代码块步骤所需的参数
2. 当需要执行此任务时,调用函数,执行**实参**
3. 执行代码块中的**步骤**(语句)
4. 执行完成后,从起初调用函数的位置开始执行
# 实例
## 对于函数的比喻
- **费曼 x2**:函数就像是一段可重复操作的流程,传入不同的参数,通过一套流程产出特定的结果。
- **解释/定义函数**:写好一段模板或菜谱,告诉系统“这个函数是干什么的、叫什么名字、需要什么材料、会有什么产出”。
- 红烧 xxx函数,`hongshao(主料, 调味料...)`
- 走路函数,`walk(duration, terrain, speed...)`
- **调用函数**:真正把材料带进函数里,让它按照事先写好的逻辑去做事,最终拿到结果。
- 红烧肉、红烧茄子、红烧鸡腿...
- 去蓟县爬山
# 相关内容
## 与数学公式的不同
- **侧重点**:
- 函数注重的是“操作流程”
- 数学注重的是“抽象的映射关系”和“计算结果”
- 比如 f(x)=x2f(x)=x2,它描述的是输入 x 和输出 x² 之间的数学关系,没有其它额外的东西。
- 数学公式往往强调“纯净和精确”,而编程函数则强调“灵活和实用”。
# 问题
# 问题答案
# 参考资料
- [function cheetsheet](https://www.codecademy.com/learn/introduction-to-javascript/modules/learn-javascript-functions/cheatsheet)
- [function docs](https://www.codecademy.com/resources/docs/javascript/functions?page_ref=catalog)
- [函数-MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Functions#%E5%87%BD%E6%95%B0%E4%BD%9C%E7%94%A8%E5%9F%9F)
- [ChatGPT-调用函数、函数与数学的关系](https://readwise.io/reader/shared/01jjde0y89mtn1n1ah812e718n)