zoukankan      html  css  js  c++  java
  • 【JavaScript 函数02】

    一、一般函数

    js中的函数演示

    函数:就是一个功能的封装体

    定义功能通常需要两个明确:

    1、功能的结果

    2、功能实现中的参与运算的未知的内容

    Java中定义函数的格式是:修饰符 数据类型  函数名(参数列表){}

    js中定义函数的格式:

    通过制定的关键字来定义

    function 函数名(参数列表){

      函数体:

      return 返回值;//如果没有具体的返回值,return语句可以省略不写

    }

    3、函数的一些细节

    1、只要使用函数的名称就是对这个函数的调用

    2、函数中有一个数组在对传入的参数进行存储。这个数据就是arguments

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>functionDemo</title>
    </head>
    <body>
    
        <script type="text/javascript">
    
           function demo() {
                alert("demo run");
    
                return;
            }
    
            demo();  //调用demo()
            function add(x,y) {
                return x+y;
            }
    
            var sum=add(4,5);
            alert(sum)
    
    
            //---------------------
            function show(x,y) {
                alert(x+"::"+y)
    
                //证明arguments存储函数传入的参数
                for(var a=0;a<arguments.length;a++){
                    document.write(arguments[a])
                }  //执行结果:45678
            }
    
            show(4,5,6,7,8);//建议函数中定义几个参数就传递几个参数
    
    
    
            function demo1() {
                return 100;
            }
    
            var sum = demo1();//执行结果:100
            var sum = demo1;
            document.write("sum=="+sum);  //执行结果:sum==function demo1() { return 100; }
    
            /*
            * 为什么会出现两个不同的结果:
            * 第一个:demo1函数运行,并将返回的结果赋值给sum
            * 第二个:demo1本身就是一个函数名,而函数本身在js中就是一个对象。demo1就是这个函数对象的引用,将
            *   demo1这个引用的地址赋值给sum。这时sum也指向了这个函数对象,相当于这个函数对象有两个名称
            *   打印的时候如果sum指向函数对象,那么会将该函数对象的字符串表现形式打印出来,就是该函数的代码定义格式
            *
            * */
            
        </script>
    
    </body>
    </html>

    二、动态函数

    使用的是js中内置的一个对象Function

    只不过用的不是很多

    参数列表,函数体都是通过字符串动态指定的

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>functionDemo</title>
    </head>
    <body>
    
        <script type="text/javascript">
    
         
            var add = new Function("x,y","var sum;sum=x+y;return sum");
            var he = add(4,8);
            alert(he)
            
           //一般常用这种方式,上面用到动态函数Function就是相对灵活一些
            function add1(x,y) {
                var sum;
                sum = x+y;
                return sum;
            }
            
    
        </script>
    
    </body>
    </html>

    三、匿名函数

    没有名字的函数

    通常是函数的简写形式

     var add3 = function(a,b) {
               return a+b;
           }
    
           alert(add3(7,8));

    四、函数练习

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>练习1</title>
    </head>
    <body>
        <script type="text/javascript">
    
            /*
            * 综合练习:
            * 1、定义功能,完成对数组的最值获取
            * 2、对数组排个序
            * 3、对数组元素进行反转
            *
            * */
    
            var arr = [3,12,5,55,8,99];
            //取最值
            function getMax(arr) {
                var max=0;
    
                for(var i=1;i<arr.length;i++){
                    if(arr[i]>arr[max]){
                        max = i;
                    }
                }
    
                return arr[max];
            }
    
            alert("getMax=="+getMax(arr));//执行结果:getMax==99
    
            //排序
            function mySort(arr) {
                for(var i=0;i<arr.length-1;i++){
                    for(var j=i+1;j<arr.length;j++){
                        if(arr[i]>arr[j]){
                            swap(arr,i,j);
                        }
                    }
                }
            }
    
            function swap(arr,x,y) {
                var temp = arr[x];
                arr[x]= arr[y];
                arr[y]= temp;
            }
    
            function println(val) {
                document.write(val+"<br/>")
            }
    
            println("排序前=="+arr);
            mySort(arr);
            println("排序后=="+arr)
    
    
           //数组反转
            function reverseArray(arr) {
                for(var start=0,end=arr.length-1;start<end;start++,end--){
                    swap(arr,start,end)
                }
            }
    
            reverseArray(arr);
            println("反转后=="+arr);
    
            /* 执行结果:
                    排序前==3,12,5,55,8,99
                    排序后==3,5,8,12,55,99
                    反转后==99,55,12,8,5,3
            */
    
        </script>
    
    </body>
    </html>
  • 相关阅读:
    Linux双线双网卡双IP双网关设置方法
    Docker 清理命令集锦
    Centos7安装Docker 基于Dockerfile 搭建httpd运行环境
    Centos6.x 安装vnc
    KVM虚拟化技术
    ELK监控系统nginx / mysql慢日志
    ELK初学搭建(elasticsearch)
    (转)Linux 磁盘IO性能测试
    hadoop2.9.2 调整jvm
    (转)shell调试方法
  • 原文地址:https://www.cnblogs.com/frankruby/p/13819359.html
Copyright © 2011-2022 走看看