189 8069 5689

函数Function怎么用

这篇文章主要介绍了函数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?