函数的基础
一、认识函数
1、函数的概述:
函数的概念:什么是函数?
对于反复使用的功能代码,对其封装成一个独立的模块,这种功能代码块就是函数。
或者说简单点儿就:是将一段公共的代码进行封装,给它起个名字叫"函数"。说通俗点儿函数就是一个功能,就是一个方便的工具。
2、函数的好处:
重复使用----空调不可能是一次性的,可以重复使用
忽略细节----会用空调不一定会生产空调
选择执行----夏冬使用,春秋不用
3、函数的特点:
函数可以一次定义,多次使用。
方便代码管理。
便于控制程序的执行时间。
函数,可以将常用的功能代码,进行封装。如:用户名的验证、验证码函数、邮箱的验证、手机号码验证。
举例说明:求两个数的最大值?
求0和5的最大值
求10和20的最大值
求30和40的最大值
没学函数之前的写法:
var a=0;
var b=5;
if(a>b)
{
document.write(a+"大<br/>")
}else
{
document.write(b+"大<br/>")
}
var a=10;
var b=20;
if(a>b)
{
document.write(a+"大<br/>")
}else
{
document.write(b+"大<br/>")
}
...
学了函数之后的写法:
function getMax(a,b)
{
if(a>b)
{
document.write(a+"大<br/>");
}else
{
document.write(b+"大<br/>");
}
}
getMax(0,5);
getMax(10,20);
大家比较下,应该很容易发现第二种的写法显然比第一种写法,从代码量上就少了很多,而且可以重复使用,这也是我们学习函数的一个重要原因。因为在以后的工作中,想要实现各种较复杂的功能,代码量可能是今天的几倍或者几百倍之多,为了减轻工作负担,提高代码的利用率,学习函数就非常重要。
二、定义函数
定义函数:怎样定义一个函数或者说函数语法的格式是什么?
语法:
function functionName(参数1,参数2,参数3。。。)
{
函数功能代码
}
functionName(参数);
函数的参数:
说明:
function关键字是必须的,全小写
functionName:函数的名称。函数名的命名规则与变量名一样。
(形参):是定义函数时接收数据的参数,参数可有可无,多个参数之间用逗号隔开。
形参:形式参数,定义函数时的参数就是"形参"。主要用来接收调用函数者传过来的数据。
形参的名称,与变量的命名规则一样。
但参数不能用"var"关键字定义。
参数只存在于函数中。
参数不需要声明,直接使用。
实参:实际参数,调用函数时的参数称为"实参".实参就是真正的数据。
三、函数的调用
函数定义是不会执行的,那么,函数必须调用,才会有效果。
函数的调用:直接写函数名后跟小括号(),如果有参数则写参数。小括号不能省略。
例子:
//定义函数
function show()
{
document.write('张三的年龄是30岁!')
}
//函数调用
show();
函数的参数
形参的个数,要与实参的个数一致。
形参的顺序,要与实参的顺序一致。
//定义函数
function show(name,age)
{
document.write(name+"的年龄是"+age+"岁!<br />")
}
//函数调用
show("李四",20);
show("张三",26);
show("小明",23);
四、常用事件
是一种可以被js侦测到的行为--------按下遥控器上的开关,空调打开
在JS中常见的事件有:
鼠标点击--------onclick
页面或图片加载-----onload
鼠标移入--------onmouseover
鼠标离开--------onmouseout
键盘事件
……
主要用于和用户产生一定的交互,提高页面或程序的交互性。
事件和函数之间的关系
当触发事件的时候,执行函数-------按下制冷按钮,空调吹冷风
事件----调用----函数
五、函数的返回值
return语句,用于向函数调用者返回一个值,并立即结束函数的运行。
如果我们要是外部获取到函数内运行的结果,可以通过return语句跟后面的要返回的值来实现返回值。
例如:
function fn(a,b,c){
console.log(a+b+c);
}
alert(fn(1,2,3));//弹出undefined
注意点:因为fn()函数没有返回值,只要没有返回值的函数,都返回一个undefined
可通过关键字return返回函数的值。
return的作用:1.返回值;2.终止程序
function fn(a,b,c){
console.log(a+b+c);
return a+b+c;
}
alert(fn(1,2,3));//弹出6
什么是返回值?
将函数处理后的数据,返回到函数名上,便于其他程序或用户调用或做二次使用
如果有return,此时fn(1,2,3)==return的返回值
如果没有return,此时fn(1,2,3)==undefined
return中止程序之后,return下面的代码不会执行
不一定所有函数都要有返回值,只有需要返回数据的函数才加return
return可以返回任何值,包含函数,当返回函数时,如果需要执行返回的函数,可将返回值当成一个函数名,加上一个()即可执行;
六、arguments对象
标准定义:
Arguments是个类似数组但不是数组的对象,说他类似数组是因为其具备数组相同的访问性质及方式,能够由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。还有就是arguments对象存储的是实际 传递给函数的参数
arguments作用:保存所有传递给函数的实参
理解定义:每个函数内部都一个叫arguments的东西, 是一个伪(类似)数组,可以使用数组里面的一些方法。
例子:console.log() 也是通过()来调用的,所以log也是一个函数。log函数的特点是可以接受一个或者或者多个参数。为什么log函数可以接受一个或者多个参数,内部实现原理就用到了arguments
function getSum(){
var sum = 0;
for(var i=0; i<arguments.length; i++){
var num = arguments[i];
sum += num;
}
return sum;
}
var res = getSum(10, 20, 30);
console.log(res);
arguments 属性: callee 这个属性对应一个函数对象,就是当前正在执行的函数的对象(后面再讲)
function f(num){
if(num<1){
return 1;
}else{
return arguments.callee(num-1)*num;
}
}
var res = f(5);
console.log(res);
arguments.callee.length表示形参的个数