【JavaScript函数】

 函数的定义 :

【完成某一个功能的代码段】

  1、方便维护 

  2、重复利用

  3、执行代码段

  函数的一些要求:

  function 定义某一个函数 命名最好要有语义化,
  函数名称最好是驼峰,
  严格区分大小写,
  函数名重名会产生覆盖,
  函数可以有参数也可以没有参数,
  可写一个也可写多个,写几个传几个 ,
  函数通过return返回值,如果不返回则是undefined。

 自调用函数:

  函数表达式可以 "自调用"。

  自调用表达式会自动调用。

  如果表达式后面紧跟 () ,则会自动调用。

  不能自调用声明的函数。

  通过添加括号,来说明它是一个函数表达式:

1 (function () {
2     var x = "Hello!!";      // 我将调用自己
3 })();

 回调函数:

  原理:

  我现在出发,到了通知你”
  这是一个异步的流程,“我出发”这个过程中(函数执行),“你”可以去做任何事,“到了”(函数执行完毕)“通知你”(回调)进行之后的流程

 1 <script type="text/javascript">
 2             //回调函数的例子
 3             function calc(x,y){
 4                 return x()+y();
 5             }
 6             function test1(){
 7                 return 3;
 8             }
 9             function test2(){
10                 return 5;
11             }            
12 //            alert(calc(test1,test2));
13             alert(calc(function(){return 5;},function(){return 10;}));    
14         </script>

  实现默认参数和可变参数:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title></title>
 6     </head>
 7     <body>
 8     <script type="text/javascript">
 9     //实现默认参数的形式
10     function calc(x,y){
11         x=x||0;
12         y=y||0;
13         return x+y;
14 }
15     function calc(x,y){
16         if(x===undefined){
17             x=0;
18         }
19         y=y===undefined?0:y;
20         return x+y;
21     }
22 //    alert(calc());  
23 //    alert(calc(1,3));
24     function calc(x,y){
25         //return arguments;
26         //alert(arguments[0]);
27         //alert(arguments[1]);
28         x=arguments[0]?arguments[0]:0;
29         y=arguments[1]?arguments[1]:0;
30         return x+y;
31     }
32 //    alert(calc());
33 //    alert(calc(1,2));
34 //可变参数形式的函数
35     var sum=0;
36     function test(){
37         var paramsNum=arguments.length;//得到传入参数的个数
38         for(var i=1;i<=paramsNum;++i){
39             sum+=arguments[i];
40             //sum = sum + arguments[i];
41         }
42         return sum;
43         //document.write(sum);
44     }
45     //alert(test(1,2,3,4,5,6,123,344,43,3));
46     function test1(){
47         var paramsNum=arguments.length;
48         var max=0;
49         for(var i=0;i<=paramsNum-1;i++){
50             if(arguments[i]>max){
51                 max=arguments[i];
52             }
53         }
54         return max;
55     }
56     alert(test1(123,445643,3432,23456));
57     </script>
58 </body>
59 </html>

  全局函数:

 1     <script type="text/javascript">
 2         //全局函数的例子
 3         document.write('默认情况的结果<br/>');
 4         document.write(parseInt('32')+'<br/>');
 5         document.write(parseInt('032')+'<br/>');
 6         document.write(parseInt('0x32')+'<br/>');
 7         document.write(parseInt('true')+'<br/>');
 8         document.write(parseInt('3king')+'<br/>');
 9         document.write(parseInt(' 5abc ')+'<br/>');
10         document.write(parseInt(' 88 99 00')+'<br/>');
11         document.write('<hr color="red"/>');
12         document.write('转换成二进制的结果<br/>');
13         document.write(parseInt('32',2)+'<br/>');
14         document.write(parseInt('032',2)+'<br/>');
15         document.write(parseInt('0x32',2)+'<br/>');
16         document.write('<hr/>');
17         document.write('转换成八进制的结果<br/>');
18         document.write(parseInt('32',8)+'<br/>');
19         document.write(parseInt('032',8)+'<br/>');
20         document.write(parseInt('0x32',8)+'<br/>');
21         document.write('<hr/>');
22         document.write('转换成八进制的结果<br/>');
23         document.write(parseInt('32',16)+'<br/>');
24         document.write(parseInt('032',16)+'<br/>');
25         document.write(parseInt('0x32',16)+'<br/>');
26         //二进制转换成其他进制
27         document.write('<hr/>');
28         document.write('二进制转换成其他进制的结果<br/>');
29         document.write(parseInt('11001010',2)+'<br/>');
30         document.write(parseInt('11001010',8)+'<br/>');
31         document.write(parseInt('11001010',10)+'<br/>');
32         document.write(parseInt('11001010',16)+'<br/>');
33         document.write(parseInt('202',2)+'<br/>');
34         
35         //转换成浮点型
36         document.write('<hr/>');
37         document.write(parseFloat('2.6')+'<br/>');
38         document.write(parseFloat('323')+'<br/>');
39         document.write(parseFloat('2e2')+'<br/>');
40         document.write(parseFloat('123abc')+'<br/>');
41         document.write(parseFloat(' 2.6 ')+'<br/>');
42         document.write(parseFloat('a2.6')+'<br/>');
43         
44         //通过isFinite()检测是否是无穷值
45         var x=123;
46         x=Infinity;
47         x=-Infinity;
48         x=0/0;
49         x=0;
50         x=false;
51 //        alert(isFinite(x));
52         x=NaN;
53         x=123;
54         x=false;
55         x=parseInt('king3');
56         alert(isNaN(x));
57     </script>

 全局变量和局部变量的区别:

        <script type="text/javascript">
            //全局变量和局部变量的区别
//            function test(){
//                var x=1;
//                alert(x);
//            }
//            test();
//            alert(x);
//            function test1(){
//                y=5;
//                alert(y);
//            }
            //test1();
            //alert(y);
        var x=1,y=2;
        function calc(x,y){    
            document.write('a的值为'+a+'<br/>');//undefined
            document.write('函数体内x的值为:'+x+'<br/>');//1
            document.write('函数体内y的值为:'+y+'<br/>');//2
            var x=0,y=6;
            z=x+y;
            x=x+y;
            var a=198;
            document.write('a的值为:'+a+'<br/>');//198
            document.write('x的值为:'+x+'<br/>');//6
            return z;
        }
//        alert(calc(1,2));//6
//        alert(x+'-'+y+'-'+z);//12u    126
        //var a=1,b=2;
        function test1(){
            var a=5,b=10;
            return a+b;

        }
        function test2(){
            var a=11,b=22;
            return a+b;
        }
        alert(test1()+test2());
        /*alert(test2());
        alert(a+'--'+b);*/
            
        </script>

 函数这块总结可能不够细致,如果有更好的希望一起交流哦~~~~~

原文地址:https://www.cnblogs.com/zxnn/p/8218209.html