(注:用法和c语言相同的部分这里不作赘述,敬请谅解)
目录
1.定义函数
     (1)function语句
         不作赘述
     (2)Fuction()
         语法:
  var 函数名=new Function("参数1","参数2","参数3",...,"函数体");
         例如
         
var mysum=new Function("x","y","return x+y;");
        document.write(mysum(1,2));
         上述函数输出3
     (3)在表达式中直接定义函数
         语法:
        
 var 函数名=function(参数1,参数2,...){函数体};
         例如
        
 var mysum=function(x,y) {document.write(x+y)};
        mysum("wo shi ","sha bi");
         上述函数输出 wo shi sha bi
2.调用函数
     与c语言函数调用相同,不作赘述
3.函数的参数
     (1)判断传递函数参数的个数
         对象arguments可以获取从js中传递过来的参数,并放在arguments[]数组中,故可以通过argument对象来判断传递过来的参数个数
         例如:
     
    function mysum(x,y)
        {
            if(arguments.length!=2)
            {
                return("ni shi ge ji ba"+"<br>");
            }
            else
            return(x+y);
        }
        document.write(mysum(1,2,3));
        document.write(mysum(1,2));
         上述函数输出ni shi ge ji ba
                               3    
(2)获得实际传递参数的值
         例如:
function myfun(x,y)
		{
			if(arguments.length!=2)
			{
				var str="传递参数有误,传递了"+arguments.length+"个参数<br>";
				str+="传递的参数分别为:<br>";
				for(i=0;i<arguments.length;i++)
				{
					str+="第"+(i+1)+"个参数为:"+arguments[i]+"<br>";
				}		
				return str;
			}
			else
			{
				var z=x*y;
				return z;
			}
		}
		document.write(myfun(1,2,3));
		document.write(myfun(1,2));上述代码段输出    传递参数有误,传递了3个参数
                     传递的参数分别为:
                     第1个参数为:1
                     第2个参数为:2
                     第3个参数为:3
                     2
4.函数的递归调用
        (1)使用函数名的递归调用
                 不作赘述
         (2)使用callee属性的递归调用
                 该属性的作用是引用正在执行的函数                
                例如:
         
function myfun(x)
		{
			if(x%2==0)
			{
				document.write(x+"<br>");
			}
			if(x>1)
			{
				arguments.callee(x-1)
			}
		}
		document.write(myfun(5));
     上述代码段输出 4
                                2
5.函数的属性与方法
     (1)length属性:函数定义参数的个数(注意与arguments.length的区别),可在函数体外使用
         例如:
        
 function myfun(x,y)
        {
            if(myfun.length!=arguments.length)
            {
                return "传参与定参不一致!<br> ni shi sha bi";
            }
            else
            {
                return x+y+"<br>";
            }
        }
        document.write(myfun("wo shi ","sha bi"));
        document.write(myfun("wo shi ","sha bi","hhh"));
         上述函数输出 wo shi sha bi
                                传参与定参不一致!
                                ni shi sha bi
    (2)prototype属性:引用原型对象
         原型对象是在使用new运算符构造函数时起作用,通常用于定义新的对象类型。由于prototype属性引用的是一个对象,所以可以为该对象添加属性
         例如:
       
  function pen(color,price)
        {
            this.color=color;
            this.price=price;
        }
        var pen1=new pen("红色",20);
        pen.prototype.name="沙笔";
        document.write(pen1.color+"<br>");
        document.write(pen1.price+"<br>");
        document.write(pen1.name);
         上述代码段输出     红色
                                       20
                                       沙笔
    (3)caller属性:判断函数调用情况
         如果是在js顶层代码中调用,caller属性返回值为null,否则返回调用该函数的当前函数的Function对象的引用
         例如:
       
 function myfun()
        {
            if(myfun.caller==null)
            {
                document.write("顶层调用<br>");
            }
            else
            {
                document.write(myfun.caller);
            }
        }
        myfun();
        function myfun1()
        {
            myfun();
        }
        myfun1();
         上述代码段输出    顶层调用
                                      function myfun1() { myfun(); }
    (4)自定义属性
         类比其他属性,这里不作赘述
    (5)call()方法
         调用某个函数
         例如:
        
 function myfun()
        {
            document.write (arguments[0]+arguments[1]);
        }
        var myobject=new Object();
        myfun.call(myobject,1,2);
         上述代码段输出 3
     
     (6)apply()方法
         与call()方法相同,这里不作赘述
6.系统函数
     (1)编码函数escape()
         将字符串中的非文字、数字的字符转换成相应的ASCII码值
         例如:
         
var str="abc~!@#$%^&*()_+|\=-`";
        document.write(escape(str));
         上述代码段输出    abc%7E%21@%23%24%25%5E%26*%28%29_+%7C%3D-%60
     
     (2)解码函数unescape()
         与escape()函数相反
         例如:
       
  var str="abc~!@#$%^&*()_+|\=-`";
        str=escape(str);
        str=unescape(str);
        document.write(str);
         上述代码段输出:
         abc~!@#$%^&*()_+|=-`
    (3)求职函数eval()
         将字符串指定为对象
         例如:
        
 var pen1=1;
        var pen2=2;
        var pen3=3;
        for(i=1;i<4;i++)
        {
            var penx=eval("pen"+i);    //注意不是加法哦大天才
            document.write(penx+" ");
        }
         上述代码段输出:1 2 3
    (5)数值判断函数isNaN()
             判断变量是否为数字型,如是,则返回false,不是,则返回true
             例如:
           
  function myfun(x)
            {
                if(!isNaN(x))
                document.write("是数字呀<br>");    
                else
                document.write("哒咩!<br>");
            }
            myfun(4);
            myfun("a");
             上述代码段输出    是数字呀
                                          哒咩!
    (6)整数转换函数parseInt()
             将2,,8,16进制的数转为十进制的数
             语法:
             
parseInt(数据,底数)
             例如:
                   
 document.write(parseInt("10101",2)+" ");
                    document.write(parseInt("77",8)+" ");
                    document.write(parseInt("2A3B",16)+" ");
                    document.write(parseInt("077")+" ");
                    document.write(parseInt("0x2A3B"));
             上述代码段输出:21 63 10811 77 10811
     
     (7)浮点数转换函数parseFloat()
             将字符串数据转换成浮点数据
             与parseInt()函数类似,这里不作赘述
 --------------------------------------------------------------------------------------------
完结撒花!!!










