js中函数的概念;
函数当他被调用时执行的可重复使用的代码块 
函数定义:
【注】无参函数的声明
【格式】
function 函数名(参数){
函数体;
}
【注】函数体内,外面怎么写js代码这里就怎么写
【注】形参:我们可以把函数中不确定的值当作形参(形式上的参数)进行声明
有参函数的封装过程:
function 函数名(形参…){
函数体;
}
//函数声明/* function print(n){for(var i=0;i<n;i++){document.write("hello world<br>");}}//函数调用 实参给形参赋值 5 实参 n形参print(5); */function add(num1,num2,num3){alert(num1 + num2 + num3);}add(1,2,3);
形参和实参
函数的参数和变量是一样使用。
形参就是在函数定义时,函数名后面的参数,不能用var修饰
实参就是调用时,函数名后面的参数
arguments
计算所有传入参数的和。具体传多少参数不确定。
【注】arguments
【注】在每一个函数内,都有一个内置数组,是一个变量,叫做arguments。arguments可以存储当前函数传入的所有参数,而且是通过传参的顺序,进行排列的。
【注】arguments.length输入传入参数的个数
【注】访问arguments的里面的数据,需要通过对应的房间号/下标进行访问
【注】下标可以配合循环去使用
/* function sum(){// alert(arguments.length);alert(arguments[2]);}sum(3,4,5); */function sum(){var sum = 0;for(var i = 0; i < arguments.length ;i++){sum += arguments[i];}alert(sum);}sum (3,4,5);
return
【注】希望能够在函数外部获取到,函数调用的结果<br /> 【注】如果我们要是外部获取到函数内运行的结果,可以通过return语句跟后面的要返回的值来实现返回值<br /> 【注】return后面所跟表达式的值,就是当前函数调用的值<br /> 【注】函数执行到return语句以后,就执行结束,跟在return后面其他的语句,执行不到。
function add(num1,num2){return num1 + num2;}add(3,4);var result = add(3,4);alert(result);
作用域
作用域:就是起作用的范围,或者说是有效范围。每一个函数的声明都会形成一个作用域
全局作用域 :
全局作用域声明的变量==>全局变量
局部作用域==>函数:
局部作用域声明的变量==>局部变量,局部变量生命周期和生效的范围,都是声明该变量的函数区域。当函数调用完成后,就直接销毁。
如果全局作用域和局部作用域变量重名,我们就采取就近原则,当前访问这个变量离哪个作用域近,就是哪个作用域。
/* var a = 10;function sum(){a = 5;}alert(a);//10sum();alert(a);//5 */var a = 10;function sum(){var a = 5;alert(a);//5}alert(a);//10sum();alert(a);//10
递归
递归概念:
函数可以自己调用自己,称为递归调用
【注】我们可以写出递归,但是我们并不知带它是如何得出结果。
函数的递归调用
方法:
1. 先去找临界值,即无需计算,获得的值
2. 找这一次和上一次的关系
3. 假设当前函数已经可以使用,调用自身计算上一次的运行结果,在写出这次的运行结果。
【特点】
1. 必须有参数
2. 必须有return
【注】递归会在短时间内,使内存剧增
//1加到n的和 sum(100) = sum(99) + 100;// sum(n) = sum(n - 1) + n;/* function sum(n){if(n == 1){return 1 ;}else{return sum(n - 1) + n;}}alert(sum(100)); */function print(n){if(n == 0){return;}else{document.write("hello world<br>");return print(n - 1);}}print(5);
事件驱动函数
在和页面交互的过程中所调用的函数,该函数称之为时间驱动函数。
和页面交互的行为称之为事件。比如:鼠标点击某个按钮时(onclick)、鼠标浮动或离开
到到某个区域时(onmouseover、onmouseout)、文本框获取焦点和失去焦点时(onfocus、onblur等)
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script type="text/javascript">/*我们可以通过document.getElementById找到符合条件的标签节点。然后我们可以通过事件驱动函数,给当前的按钮绑定一系列的操作。完成用户交互*/window.onload = function(){ //写在这里的代码,在页面加载完成以后执行var Btn = document.getElementById("btn");var Txt = document.getElementById("txt");//给按钮添加事件驱动函数//单击onclick 这个函数是在按钮被点击以后 触发的Btn.onclick = function(){// alert("你也配点我?");//Txt.value 是字符串Txt.value = "呱呱呱呱呱";}}</script></head><body><input type="text" value = "咕噜咕噜" id = "txt"/><input type="button" value = "我是一个按钮" id = "btn"/></body></html>
