十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍了函数Function怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
为玛纳斯等地区用户提供了全套网页设计制作服务,及玛纳斯网站建设行业解决方案。主营业务为成都做网站、成都网站制作、玛纳斯网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
函数Function
1、概述:函数是完成特定任务的可重复调用的代码段,是JavaScript组织代码的单位 。
2、功能:将代码组织为可复用的单位,可以完成特定的任务并返回数据
3、函数定义:
3.1、JavaScript的函数属于Function对象,因此可以使用Function对象的构造函数来创建一个函数 。
3.2、可以使用function关键字以普通的形式来定义一个函数
如:
var say = Function([参数列表]){语句;[return 表达式]} //函数变量
function 函数名([参数列表]){语句;[return 表达式]} //普通函数
4、函数指针调用方式
回调 :其机制是通过指针来调用函数 。
一般函数的调用方式是常见而且普通的,但JavaScript中函数调用的形式比较多,非常灵活。
有一种重要的、在其它语言中也经常使用的调用形式叫做回调 。回调函数按调用者的照约定
实现函数的功能,由调用者调用
函数返回类型
一般情况下,函数返回的非对象数据都使用值返回方式
引用类型返回的是数据的地址,而不是数据本身 。
引用传递的优点是速度快,但系统会为维护数据而付出额外的开销。通常返回复合类型数据时使用引用传递方式
function getNameList(){
var list = new Array("张三","李四","王五");
return list ; //返回引用
}
var nameList = getNameList() ;
nameList = null ; //删除引用
返回函数 :函数可以返回一个函数指针
外部代码可以通过指针调用其引用的函数对象,调用方式和一般函数完全一样。
一般情况下私有函数不能被外界直接调用,因此可以将一个私有函数的地址作为结果返回给外界使用
function getSum(){
function sum(a,b){
return a+b ;
}
return sum ;
}
var sumOfTwo = getSum() ;
var total = sumOfTwo(1,2) ;
函数的作用域
公有函数:是指定义在全局作用域中,每一个代码都可以调用的函数 。
私有函数 :是指处于局部作用域中的函数 。当函数嵌套定义时,
子级函数就是父级函数的私有函数。外界不能调用私有函数,私有函数
只能被拥有该函数的函数代码调用 。
function a(){
alert("a");
function b(){
alert("b");
function c(){
alert("c");
}
}
b(); //可以
c(); //不可以
}
a(); //调用a
view plaincopy to clipboardprint?
//定义通用排序函数
function sortNumber(obj,func){
//参数验证,如果不是指定参数类型则抛出异常
if(!(obj instanceof Array)||!(func instanceof Function)){
var e = new Error(); //生成错误信息
e.number = 100000 ; //定义错误号
e.message = "参数无效" ;//错误描述
throw e ; //抛出异常
}else{
for(n in obj){ //开始据排序
for(m in obj){
if(func(obj[n],obj[m])){ //使用回调函数排序,规则由用户设定
var temp = obj[n] ; //创建临时变量
obj[n] = obj[m] ; //交换数据
obj[m] = temp ;
}
}
}
}
return obj ; //返回排序后的数组
}
//回调函数,用户定义的排序规则
function greatThan(arg1,arg2){
return arg1>arg2 ; //规则:从大到小
}
try{
var numAry = new Array(5,8,6,32,1,45,7,25); //生成一数组
pf("排序前:"+numAry);
sortNumber(numAry,greatThan); //调用排序函数
pf("排序后:"+numAry);
}catch(e){ //捕捉异常
alert(e.number+" : "+e.message); //异常处理
}
//定义通用排序函数
function sortNumber(obj,func){
//参数验证,如果不是指定参数类型则抛出异常
if(!(obj instanceof Array)||!(func instanceof Function)){
var e = new Error(); //生成错误信息
e.number = 100000 ; //定义错误号
e.message = "参数无效" ;//错误描述
throw e ; //抛出异常
}else{
for(n in obj){ //开始据排序
for(m in obj){
if(func(obj[n],obj[m])){ //使用回调函数排序,规则由用户设定
var temp = obj[n] ; //创建临时变量
obj[n] = obj[m] ; //交换数据
obj[m] = temp ;
}
}
}
}
return obj ; //返回排序后的数组
}
//回调函数,用户定义的排序规则
function greatThan(arg1,arg2){
return arg1>arg2 ; //规则:从大到小
}
try{
var numAry = new Array(5,8,6,32,1,45,7,25); //生成一数组
pf("排序前:"+numAry);
sortNumber(numAry,greatThan); //调用排序函数
pf("排序后:"+numAry);
}catch(e){ //捕捉异常
alert(e.number+" : "+e.message); //异常处理
}
函数的长度属性
Function.length : 是一个只读的属性,它返回函数定义的参数个数
arguments 返回我们调用函数时传递的参数列表
view plaincopy to clipboardprint?
function check(args) {
var actual = args.length; // 实际参数个数
var expected = args.callee.length; // 期望参数个数
if (actual != expected) {
//当实参与形参个数不匹配时抛出异常
throw new Error("错误的参数个数;形参数为: " + expected + ", 实际传参数为: " + actual);
}
}
function f(x, y, z) {
var result = 0 ;
try{
//检查实参与形参是否匹配
check(arguments);
result = x + y + z;
}catch(ex){
document.write("
出错啦!错误消息: "+ex.description);
}
return result;
}
document.write("
调用形式为:f(1,2,3)其结果为:
t"+f(1,2,3));
document.write("
调用形式为:f(1,2)其结果为:
t"+f(1,2));
function check(args) {
var actual = args.length; // 实际参数个数
var expected = args.callee.length; // 期望参数个数
if (actual != expected) {
//当实参与形参个数不匹配时抛出异常
throw new Error("错误的参数个数;形参数为: " + expected + ", 实际传参数为: " + actual);
}
}
function f(x, y, z) {
var result = 0 ;
try{
//检查实参与形参是否匹配
check(arguments);
result = x + y + z;
}catch(ex){
document.write("
出错啦!错误消息: "+ex.description);
}
return result;
}
document.write("
调用形式为:f(1,2,3)其结果为:
t"+f(1,2,3));
document.write("
调用形式为:f(1,2)其结果为:
t"+f(1,2));
函数的参数及调用
view plaincopy to clipboardprint?