函数的概念
- 对于 js 来说,函数就是把任意一段代码放在一个 盒子 里面
- 在我想要让这段代码执行的时候,直接执行这个 盒子 里面的代码就行
- 先看一段代码 ```javascript // 这个是我们以前写的一段代码 for (var i = 0; i < 10; i++) { console.log(i) }
// 函数,这个 {} 就是那个 “盒子” function fn() { // 这个函数我们以前写的代码 for (var i = 0; i < 10; i++) { console.log(i) } }
- 语法
无参数无返回值的函数:<br /> 声明函数:<br /> 语法: function 函数名(){<br /> 函数体;<br /> }
调用函数:<br /> 函数名();<br /> 有参数无返回值的函数:<br /> 格式:<br /> function 函数名(形参1, 形参2, 形参3...){<br /> 函数体;<br /> }
调用函数:<br /> 函数名(实参1, 实参2...);
【注】实参的传参位置和形参的位置必须一致。
形参:形式上的参数。和我们普通的变量没有任何区别。<br /> 实参:实际上的参数。
传参:用实参给形参赋值<br /> 有参数,有返回值<br /> 语法:<br /> function 函数名(形参...){<br /> 函数体;<br /> return 表达式;<br /> }
【注】return 关键字,return后面写什么,函数调用的值就是什么。<br /> 【注】如果不写return,函数调用的值是undefined。
总结:<br /> 形参:确定函数内部的不确定。<br /> 返回值:函数外面要什么要的值,return什么样的值。
- 优点
* 使程序变得简短而清晰<br /> * 有利于程序维护<br /> * 可以提高程序开发效率<br /> * 提高了代码的重用性(复用性)
<a name="qTuK2"></a>
## arguments
任何函数,内部都有一个变量,叫做arguments。
arguments,存储我们调用函数的时候,传入的实参。<br /> 【注】对象,里面存储了很多东西的变量。
取出arguments中的数据:<br /> arguments[下标] 下标是从0开始的。
arguments有一个属性:<br /> arguments.length 输出,传入的实参的个数。
arguments.callee 存储的就是当前函数
【注】暂时没有太多的用。
例题:练习:向一个函数传入不定数量的数值求和
<a name="CpF6C"></a>
## 函数补充细节:
1、系统内置函数 Chome V8引擎<br /> console.log()<br /> Math.pow(x, y) x的y次方<br /> document.write()
2、事件驱动函数(BOM浏览器)<br /> click<br /> mousedown<br /> mouseup
3、用户自定义函数<br /> <1>函数名见名思意<br /> <2> (JS高阶)
<a name="fwCKh"></a>
## 作用域
JS有一整套内存回收的机制:垃圾回收机制。
程序:<br /> 从磁盘读取到内存中,在内存中被CPU运行。【注】程序必须占用内存,内存有限的。<br /> (操作系统,计算机组成原理)
调用函数,系统会分配你需要的内存空间去运行这个函数,(内存空间的大小由这个函数内的声明的变量和形参决定),<br /> 调用函数结束,系统会回收并销毁,这部分内存。<br />调用函数,系统会分配你需要的内存空间去运行这个函数,(内存空间的大小由这个函数内的声明的变量和形参决定),<br /> 调用函数结束,系统会回收并销毁,这部分内存。
【注】函数的形参和在函数内声明变量一样对待。
<a name="JM0LJ"></a>
## 递归
递归:函数自己调用自己。<br /> 递归的作用:递归能做循环能做的所有的事情。递归的代码比循环更加简洁。
特点:<br /> 1、你能写出递归来<br /> 2、但是你不知道为什么写出来了<br />
```javascript
//1~n的和
function sum(n){
var res = 0;
for(var i = 0; i <= n; i++){
res += i;
}
return res;
}
// console.log(sum(100));
sum(100) = sum(99) + 100;
sum(n) = sum(n - 1) + n;
*/
//通过递归来写
/* function sum(n){
if(n == 1){
return 1;
}
return sum(n - 1) + n;
}
console.log(sum(100)); */
斐波那契(Fibonacci)数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1<br /> F(N) = F(N - 1) + F(N - 2), 其中 N > 1.<br /> 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。