函数的概念

  • 对于 js 来说,函数就是把任意一段代码放在一个 盒子 里面
  • 在我想要让这段代码执行的时候,直接执行这个 盒子 里面的代码就行
  • 先看一段代码 ```javascript // 这个是我们以前写的一段代码 for (var i = 0; i < 10; i++) { console.log(i) }

// 函数,这个 {} 就是那个 “盒子” function fn() { // 这个函数我们以前写的代码 for (var i = 0; i < 10; i++) { console.log(i) } }

  1. - 语法
  2. 无参数无返回值的函数:<br /> 声明函数:<br /> 语法: function 函数名(){<br /> 函数体;<br /> }
  3. 调用函数:<br /> 函数名();<br /> 有参数无返回值的函数:<br /> 格式:<br /> function 函数名(形参1, 形参2, 形参3...){<br /> 函数体;<br /> }
  4. 调用函数:<br /> 函数名(实参1, 实参2...);
  5. 【注】实参的传参位置和形参的位置必须一致。
  6. 形参:形式上的参数。和我们普通的变量没有任何区别。<br /> 实参:实际上的参数。
  7. 传参:用实参给形参赋值<br /> 有参数,有返回值<br /> 语法:<br /> function 函数名(形参...){<br /> 函数体;<br /> return 表达式;<br /> }
  8. 【注】return 关键字,return后面写什么,函数调用的值就是什么。<br /> 【注】如果不写return,函数调用的值是undefined
  9. 总结:<br /> 形参:确定函数内部的不确定。<br /> 返回值:函数外面要什么要的值,return什么样的值。
  10. - 优点
  11. * 使程序变得简短而清晰<br /> * 有利于程序维护<br /> * 可以提高程序开发效率<br /> * 提高了代码的重用性(复用性)
  12. <a name="qTuK2"></a>
  13. ## arguments
  14. 任何函数,内部都有一个变量,叫做arguments
  15. arguments,存储我们调用函数的时候,传入的实参。<br /> 【注】对象,里面存储了很多东西的变量。
  16. 取出arguments中的数据:<br /> arguments[下标] 下标是从0开始的。
  17. arguments有一个属性:<br /> arguments.length 输出,传入的实参的个数。
  18. arguments.callee 存储的就是当前函数
  19. 【注】暂时没有太多的用。
  20. 例题:练习:向一个函数传入不定数量的数值求和
  21. <a name="CpF6C"></a>
  22. ## 函数补充细节:
  23. 1、系统内置函数 Chome V8引擎<br /> console.log()<br /> Math.pow(x, y) xy次方<br /> document.write()
  24. 2、事件驱动函数(BOM浏览器)<br /> click<br /> mousedown<br /> mouseup
  25. 3、用户自定义函数<br /> <1>函数名见名思意<br /> <2> (JS高阶)
  26. <a name="fwCKh"></a>
  27. ## 作用域
  28. JS有一整套内存回收的机制:垃圾回收机制。
  29. 程序:<br /> 从磁盘读取到内存中,在内存中被CPU运行。【注】程序必须占用内存,内存有限的。<br /> (操作系统,计算机组成原理)
  30. 调用函数,系统会分配你需要的内存空间去运行这个函数,(内存空间的大小由这个函数内的声明的变量和形参决定),<br /> 调用函数结束,系统会回收并销毁,这部分内存。<br />调用函数,系统会分配你需要的内存空间去运行这个函数,(内存空间的大小由这个函数内的声明的变量和形参决定),<br /> 调用函数结束,系统会回收并销毁,这部分内存。
  31. 【注】函数的形参和在函数内声明变量一样对待。
  32. <a name="JM0LJ"></a>
  33. ## 递归
  34. 递归:函数自己调用自己。<br /> 递归的作用:递归能做循环能做的所有的事情。递归的代码比循环更加简洁。
  35. 特点:<br /> 1、你能写出递归来<br /> 2、但是你不知道为什么写出来了<br />
  36. ```javascript
  37. //1~n的和
  38. function sum(n){
  39. var res = 0;
  40. for(var i = 0; i <= n; i++){
  41. res += i;
  42. }
  43. return res;
  44. }
  45. // console.log(sum(100));
  46. sum(100) = sum(99) + 100;
  47. sum(n) = sum(n - 1) + n;
  48. */
  49. //通过递归来写
  50. /* function sum(n){
  51. if(n == 1){
  52. return 1;
  53. }
  54. return sum(n - 1) + n;
  55. }
  56. console.log(sum(100)); */

斐波那契(Fibonacci)数列

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:

  1. F(0) = 0, F(1) = 1<br /> F(N) = F(N - 1) + F(N - 2), 其中 N > 1.<br /> 斐波那契数列由 0 1 开始,之后的斐波那契数就是由之前的两数相加而得出。