js中函数的概念;
函数当他被调用时执行的可重复使用的代码块
image.png

函数定义:
【注】无参函数的声明
【格式】
function 函数名(参数){
函数体;
}
【注】函数体内,外面怎么写js代码这里就怎么写
【注】形参:我们可以把函数中不确定的值当作形参(形式上的参数)进行声明
有参函数的封装过程:
function 函数名(形参…){
函数体;
}

  1. //函数声明
  2. /* function print(n){
  3. for(var i=0;i<n;i++){
  4. document.write("hello world<br>");
  5. }
  6. }
  7. //函数调用 实参给形参赋值 5 实参 n形参
  8. print(5); */
  9. function add(num1,num2,num3){
  10. alert(num1 + num2 + num3);
  11. }
  12. add(1,2,3);

形参和实参

函数的参数和变量是一样使用。
形参就是在函数定义时,函数名后面的参数,不能用var修饰
实参就是调用时,函数名后面的参数

arguments

计算所有传入参数的和。具体传多少参数不确定。
【注】arguments
【注】在每一个函数内,都有一个内置数组,是一个变量,叫做arguments。arguments可以存储当前函数传入的所有参数,而且是通过传参的顺序,进行排列的。
【注】arguments.length输入传入参数的个数
【注】访问arguments的里面的数据,需要通过对应的房间号/下标进行访问
【注】下标可以配合循环去使用

  1. /* function sum(){
  2. // alert(arguments.length);
  3. alert(arguments[2]);
  4. }
  5. sum(3,4,5); */
  6. function sum(){
  7. var sum = 0;
  8. for(var i = 0; i < arguments.length ;i++){
  9. sum += arguments[i];
  10. }
  11. alert(sum);
  12. }
  13. sum (3,4,5);

return

  1. 【注】希望能够在函数外部获取到,函数调用的结果<br /> 【注】如果我们要是外部获取到函数内运行的结果,可以通过return语句跟后面的要返回的值来实现返回值<br /> 【注】return后面所跟表达式的值,就是当前函数调用的值<br /> 【注】函数执行到return语句以后,就执行结束,跟在return后面其他的语句,执行不到。
  1. function add(num1,num2){
  2. return num1 + num2;
  3. }
  4. add(3,4);
  5. var result = add(3,4);
  6. alert(result);

作用域

作用域:就是起作用的范围,或者说是有效范围。每一个函数的声明都会形成一个作用域
全局作用域 :
全局作用域声明的变量==>全局变量
局部作用域==>函数:
局部作用域声明的变量==>局部变量,局部变量生命周期和生效的范围,都是声明该变量的函数区域。当函数调用完成后,就直接销毁。

如果全局作用域和局部作用域变量重名,我们就采取就近原则,当前访问这个变量离哪个作用域近,就是哪个作用域。

  1. /* var a = 10;
  2. function sum(){
  3. a = 5;
  4. }
  5. alert(a);//10
  6. sum();
  7. alert(a);//5 */
  8. var a = 10;
  9. function sum(){
  10. var a = 5;
  11. alert(a);//5
  12. }
  13. alert(a);//10
  14. sum();
  15. alert(a);//10

递归

递归概念:
函数可以自己调用自己,称为递归调用
【注】我们可以写出递归,但是我们并不知带它是如何得出结果。
函数的递归调用
方法:
1. 先去找临界值,即无需计算,获得的值
2. 找这一次和上一次的关系
3. 假设当前函数已经可以使用,调用自身计算上一次的运行结果,在写出这次的运行结果。
【特点】
1. 必须有参数
2. 必须有return
【注】递归会在短时间内,使内存剧增

  1. //1加到n的和 sum(100) = sum(99) + 100;
  2. // sum(n) = sum(n - 1) + n;
  3. /* function sum(n){
  4. if(n == 1){
  5. return 1 ;
  6. }else{
  7. return sum(n - 1) + n;
  8. }
  9. }
  10. alert(sum(100)); */
  11. function print(n){
  12. if(n == 0){
  13. return;
  14. }else{
  15. document.write("hello world<br>");
  16. return print(n - 1);
  17. }
  18. }
  19. print(5);

事件驱动函数

在和页面交互的过程中所调用的函数,该函数称之为时间驱动函数。
和页面交互的行为称之为事件。比如:鼠标点击某个按钮时(onclick)、鼠标浮动或离开
到到某个区域时(onmouseover、onmouseout)、文本框获取焦点和失去焦点时(onfocus、onblur等)

  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. <script type="text/javascript">
  8. /*
  9. 我们可以通过document.getElementById找到符合条件的标签节点。
  10. 然后我们可以通过事件驱动函数,给当前的按钮绑定一系列的操作。完成用户交互
  11. */
  12. window.onload = function(){ //写在这里的代码,在页面加载完成以后执行
  13. var Btn = document.getElementById("btn");
  14. var Txt = document.getElementById("txt");
  15. //给按钮添加事件驱动函数
  16. //单击onclick 这个函数是在按钮被点击以后 触发的
  17. Btn.onclick = function(){
  18. // alert("你也配点我?");
  19. //Txt.value 是字符串
  20. Txt.value = "呱呱呱呱呱";
  21. }
  22. }
  23. </script>
  24. </head>
  25. <body>
  26. <input type="text" value = "咕噜咕噜" id = "txt"/>
  27. <input type="button" value = "我是一个按钮" id = "btn"/>
  28. </body>
  29. </html>