• js函数(续)


    一、全局变量和局部变量
    全局变量:当前js页面中均可使用的变量【声明在函数外面的变量】,整个js页面中均可以使用。
    局部变量:声明在函数内部的变量,只能在函数内部使用。
    eg:

        var a = 1;
        console.log(a);
        function test(){
            console.log(a);  //1
            var b = 2 //
            c = 3;  //c变量为全局变量,它的声明提前了【在页面的开始声明】
            console.log(b);  //2
        }
        console.log(b);  //错误提示:b is not defined

    二、函数的使用
    函数作为函数的参数使用:(可以作为回调函数使用)
    eg:

        function test(fun){
            var msg = '我是test()函数中的变量msg';
            fun(msg);
        }
        //函数test的调用
        test(function(param){
            console.log(param);  //输出:我是test()函数中的变量msg
        });

    函数作为返回结果来使用:
    eg:

        function test(){
            return function(){
                console.log('我是test()函数的返回函数中的输出语句');
            };
        }
        //函数test的调用
        test();   //test();的返回值为:function(){console.log('我是test()函数的返回函数中的输出语句');}
        test()();  //输出:我是test()函数的返回函数中的输出语句


    三、值传递与地址传递【简单叙述一下】
    a.变量是通过值传递的。后面变量值改变不影响前面变量的值【相当于值的复制
    b.对象是通过地址传递的。赋值时使用的是指向该对象的指针地址,获得该指针地址的变量改变
    对象属性值,其他拥有相同指针地址的变量指向的堆空间属性值也相应更新改变,所以其前面对象相应的属性值会发生改变。

    四、闭包

        //闭包  是函数访问上下文中的变量
        var arr = [];
        for(var i=0;i<5;i++){
        /*
            //这样的代码会有闭包现象
            arr[i] = function(){
                console.log(i);
            };
        */
        
            //解决闭包问题,使用立即执行函数来动态获得相应参数i的值
            arr[i] = (function(num){
                    return function(){
                        console.log(num);
                    };
            })(i);
        }
        console.log(arr);  //Array(5) [i(),i(),i(),i(),i()]
        arr[0](); //0
        arr[1](); //1
        arr[2](); //2

           

  • 相关阅读:
    使用openssl实现ECDSA签名以及验证功能(附完整测试源码)
    【转载】浅谈Linux内存管理机制
    【转载】Abstract Factory Step by Step --- 抽象工厂
    【转载】动态规划:从新手到专家
    Windows Container 和 Docker:你需要知道的5件事
    十年
    Docker,容器,虚拟机和红烧肉
    新的用户故事待办列表就是一副地图
    MarkDown/reST 文档发布流水线
    docker4dotnet #5 使用VSTS/TFS搭建基于容器的持续交付管道
  • 原文地址:https://www.cnblogs.com/nzcblogs/p/11177140.html
Copyright © 2020-2023  润新知