• JavaScript 函数


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>test</title>
    </head>
    <body>
        <script>
            /* 函数第一种声明 */
            var abc;
            abc = function (a, b) {
                alert(a + b);
            }
            abc(1, 3);
    
            /* 函数第二种声明 */
            var c = 5, d = 6;
            test(c, d);
            function test(c, d) {
                alert(c + d);
            }
    
            /* 在js的函数里面还可以定义函数(私有函数) */
            function testaaa() {
                var res = add(2, 2);
                function add(a, b) {
                    return a + b;
                }
                return res;
            }
            alert(testaaa());
    
            /* 匿名函数第一种用法 赋值给变量,赋值给对象的属性 */
            var abc;
            abc = function (a, b) {
                alert(a + b);
            }
            abc(1, 3);
    
            /* 匿名函数第二种用法 作为参数传入函数,类似回调函数 */
             function test(a, b, f) {
               return f(a, b);
            }
    
            function add(a, b) {
                return a + b;
            }
            alert(test(2, 3, function (a, b) {
                return a + b;
            }));
    
            /* 匿名函数第三种用法 作为命名空间,定义完后直接调用 */
            /* 匿名函数第一种调用方法 */
            !function () {
                function a()
                {
                    alert("我是a函数!");
                }
                function b()
                {
                }
                function c()
                {
    
                }
                a();
            }();
    
            /* 匿名函数第二种调用方法 */
            (function () {
                function a()
                {
                    alert("我是a函数!");
                }
                function b()
                {
                    alert("我是b函数!");
                }
                function c()
                {
    
                }
                b();
            })();
    
            /* 匿名函数第三种调用方法 */
            (function () {
                function a()
                {
                    alert("我是a函数!");
                }
                function b()
                {
                    alert("我是b函数!");
                }
                function c()
                {
                    alert("我是c函数!");
                }
                c();
            }());
            
            /* 匿名函数的传参 */
            !function (a, b) {
                alert(a + b);
            }(2, 4);
    
            /* 在外部间接调用私有属性和函数的第一种方法 */
             返回一个函数
             var md5 = function () {
                function a()
                {
                    alert("我是a函数!");
                }
                function b()
                {
                    alert("我是b函数!")
                }
                function c()
                {
                    alert("我是c函数!")
                }
                return a;
            }();
            md5();
    
            /* 返回多个接口 */
            var md5 = function () {
                function a()
                {
                    alert("我是a函数!");
                }
                function b()
                {
                    alert("我是b函数!")
                }
                function c()
                {
                    alert("我是c函数!")
                }
                return {
                    a : a,
                    b : b,
                    c : c
                };
            }();
            md5.a();
            md5.b();
    
            /* 在外部间接调用私有属性和函数的第二种方法 */
            var obj = {};
           !function () {
                function a()
                {
                    alert("我是a函数!");
                }
                function b()
                {
                    alert("我是b函数!")
                }
                function c()
                {
                    alert("我是c函数!")
                }
               obj.a = a;
               obj.b = b;
               obj.c = c;
            }();
           obj.a();
           obj.b();
    
            /* 在外部间接调用私有属性和函数的第三种方法(1) */
           !function () {
                function a()
                {
                    alert("我是a函数!");
                }
                function b()
                {
                    alert("我是b函数!")
                }
                function c()
                {
                    alert("我是c函数!")
                }
               window.a = a;
               window.b = b;
               window.c = c;
            }();
           a();
           c();
    
           /* 在外部间接调用私有属性和函数的第三种方法(2) */
           !function (w) {
                function a()
                {
                    alert("我是a函数!");
                }
                function b()
                {
                    alert("我是b函数!")
                }
                function c()
                {
                    alert("我是c函数!")
                }
               w.a = a;
               w.b = b;
               w.c = c;
            }(window);
           c();
    
           /* js当中没有函数重载 */
            /* js支持可变参数 */
            function test() {
                alert(arguments.length);
            }
            test(1, 2);
            function test() {
                alert(arguments[1]);
            }
            test(1, 3);
    
            // 在顶层代码引用this 就代表Window ,函数里的this,谁调用它,就代表谁
            var a = 100;
            alert(this.a);
    
            var a = 200;
            function test() {
                var a = 100;
                alert(this.a);
            }
            window.test();
    
            var x = 2000;
            var obj1 = {
                x : 1000,
                y : function () {
                    alert(this.x);
                }
            };
            var obj2 = {
                x : 3000,
                y : function () {
                    alert(this.x);
                }
            };
            alert(this.x);
            obj1.y();
            obj2.y();
    
            //  ECMAScript规范所有函数都包含两个非继承的方法,分别为call()和apply(),这两个函数都是在特定的作用域中调用函数,能改变函数的作用域,实际上是改变函数体内“this”的指代的对象。
            /* 函数也是对象,它也有属性和方法,最常用的方法是call 和 apply */
            function test(a, b) {
                alert(a + b);
                alert(this.x);
            }
            var obj1 = {
                x : 1000,
                y : function () {
                    alert(this.x);
                }
            };
            var obj2 = {
                x : 3000,
                y : function () {
                    alert(this.x);
                }
            };
            // call 方法有好几个参数,第一个是对象,剩下的都是传给这个函数的参数
            // test.call(obj1);
            test.call(obj2, "张三", "李四");
            // apply 只有两个参数,第一个是对象,第二个是数组
            test.apply(obj1, ["张三", "王五"]);
    
            // 闭包
            function test() {
                var a = 100;
                return function () {
                    return a;
                }
            }
            var abc = alert(test()());
        </script>
    </body>
    </html>

    需要注意的是 Javascript 里面没有函数重载。

  • 相关阅读:
    s3c6410 SD卡启动的Secure mode
    转载:在WinCE中实现Screen Rotation
    Linux常用的
    49美元Android PC驾到!威盛APC初探
    通过ImageIO创建任意大小图片缩略图(image thumbnail)
    MongoDB中的注意事项
    PHP连接Mongo时的数据库指定
    MongoDB与PHP的简单应用
    关于MongoDB的group用法
    MongoDB的管理
  • 原文地址:https://www.cnblogs.com/duxie/p/11703158.html
Copyright © 2020-2023  润新知