16_函数.html 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <script>
  10. var n = 5;
  11. // function 定义函数 函数名加括号 括号里面参数(行参)
  12. function foo(i){
  13. // 参数仅在函数内有效
  14. console.log(i + 10);
  15. }
  16. // 函数调用 函数名+括号 括号里是参数(实参)
  17. // foo(n);
  18. // 作用域
  19. // 在函数外定义的变量称为 全局变量 这个变量所在的作用域称为全局作用域 全局作用域的变量在任何地方都是有效的
  20. var k = 1;
  21. function foo2(x){
  22. // 函数内定义的变量仅在函数内生效
  23. // 函数作用域(局部作用域)
  24. var y = 10;
  25. console.log(x+y+k);
  26. }
  27. // console.log(y);
  28. // foo2(6);
  29. // 多参数 行参部分 可以定义多个参数用逗号间隔
  30. function foo3(x,y){
  31. console.log(x+y);
  32. }
  33. // foo3(1,2);
  34. // 函数返回值
  35. function foo4(x){
  36. // 在函数中 return表示返回值 return后面写什么就返回什么
  37. return x + 10;
  38. }
  39. // var sum = foo4(5);
  40. // console.log(sum);
  41. function foo5(x){
  42. // 函数中遇到return后停止当前函数 后面有代码也不会再执行了
  43. return x + 10;
  44. console.log(x);
  45. }
  46. // var sum = foo5(6);
  47. // console.log(sum);
  48. // 函数嵌套
  49. function foo6(x){
  50. var k = 10;
  51. // 函数内定义的函数也是仅在函数内生效 在函数外无法调用
  52. function foo7(y){
  53. // 内部函数可以调用外部函数的局部变量
  54. console.log(x+y+k);
  55. }
  56. foo7(2);
  57. }
  58. // foo6(1);
  59. // 把函数当作返回值使用
  60. function foo8(){
  61. function foo9(){
  62. console.log("foo9");
  63. }
  64. return foo9;
  65. }
  66. // console.log(foo8);
  67. // var foo10 = foo8();
  68. // console.log(foo10);
  69. // foo10();
  70. // 如果function 后面没有函数名 则表示这是一个匿名函数
  71. // 匿名函数一般情况不能直接使用 使用的时候会将它赋给一个变量 这个变量名就是他函数名
  72. var foo11 = function(a){
  73. console.log(a+"foo11");
  74. }
  75. foo11("hello");
  76. // 特殊情况
  77. //js中允许先调用函数 后定义函数
  78. foo12();
  79. function foo12(){
  80. console.log("foo12")
  81. }
  82. function foo13(){
  83. var a = 10;
  84. }
  85. function foo14(){
  86. var a = 20;
  87. }
  88. // 如果函数没有返回值 那么接收到的undefined
  89. function foo15(){
  90. console.log("foo15")
  91. }
  92. // var x = foo15();
  93. // console.log(x)
  94. // 递归自己调用自己
  95. // 使用递归的时候一定要有出口
  96. function foo16(i){
  97. if(i>10){
  98. return false;
  99. }
  100. console.log(i)
  101. foo16(++i);
  102. }
  103. // foo16(1)
  104. // 斐波那契数列
  105. // 1 1 2 3 5 8
  106. // 平方函数
  107. console.log(Math.pow(2,2))
  108. </script>
  109. </body>
  110. </html>