- 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(); ``` ### 调用函数 ![](http://image.harryrou.wiki/2023-01-30-%E6%88%AA%E5%B1%8F2023-01-31%2007.53.15.png) ![](https://content.codecademy.com/courses/learn-javascript-functions/Diagram/function%20execution.svg) - 函数可被无限次调用 - 调用函数的步骤: 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)