美文网首页
七、JavaScript函数(function)

七、JavaScript函数(function)

作者: XZ阳光小熊 | 来源:发表于2016-05-28 16:16 被阅读131次

    函数就是包裹在大括号中的代码块,前面使用了关键词 function:

    一、函数的声明

    函数的声明

    我们声明一个求数字立方的函数,函数在定义之后,并不会执行里面的内容,只有在函数进行调用的时候,才会执行。

        // 定义一个求一个数字的立方的函数,并调用
        function cube(a) {
            return a * a * a;
        }
        var res = cube(3);
    

    1、函数表达式

    函数表达式,即用变量保存匿名函数。上面的式子就是一个函数表达式,其中从function后面一直到反大括号包裹的内容称为函数体,cube被称之为函数名,a就是函数的参数,return后面的内容称之为返回值。我们只要调用上面的函数就可以求出任何一个数的立方。

    二、函数的参数和返回值

    1、函数的参数。

    观察上面的函数表达式我们会发现函数名括号内有一个a,这个a就是称之为函数的参数。参数类型分为两种:一种叫显示参数也叫形参,是我们在定义的时候写的参数,如上面的a即为形参;另一种叫隐藏参数也叫实参,是函数在调用的时候用的值,如上面函数调用时函数名后面括号内的3即为实参。
    函数的参数一般写在函数名后面的小括号内,如果不写参数默认是undefined,函数的参数可以是一个,也可以是多个,当我们不知道到底有多少个参数的时候可以使用arguments 关键字,它表示函数中所有参数组成的数组。

    2、函数的返回值(return)。

    另外我们查看上面的函数表达使会发现有一个return关键字后面跟着a ×a × a,这就是函数的返回值。我们将参数a传入函数内,再返回三个a的乘积,函数调用时我们就可以通过参数返回我们想要的结果。所以有时,我们会希望函数将值返回调用它的地方。通过使用 return 语句就可以实现。在使用 return 语句时,return 语句后的代码都不会被执行,并返回指定的值。函数调用将被返回值取代,当然也不是所有的函数都需要返回值,我们可以根据需求选择是否添加返回值。

        function fun(a) {
            console.log(a);
        }
        fun('我是一个没有返回值的函数')
    
        // 函数有多个参数
        function func5(a, b) {
            var res = a + b;
            return res;
        }
        var res3 = func5(12, 34);
        console.log(res3);
    
        // 函数内部使用 arguments 关键字
        function func6() {
            // 求出所有参数的和,并返回
            var res = 0;
            for (var i = 0; i < arguments.length; i++) {
                res += arguments[i];
            }
            return res;
        }
        console.log(func6(1, 2, 3, 4, 5, 6));
    
    代码执行效果

    三、函数的调用

    1、函数的调用方式

    声明函数后如果没有调用,函数表达式里面的代码是不会执行的函数的调用有两种方法:一种是直接编写函数名后面紧跟小括号,如上面我们求立方的函数我们只用这么写cube(3),即可调用求出3的立方;第二种是直接调用也叫自调用函数,其语法就是写两个小括号,我们把函数写在第一个小括号内,函数运行时它会直接运行函数里面的代码。

        (function () {
            console.log('我是一个自调用函数');
        })();
    
    
        (function test() {
            console.log('我是另外一个自调用函数');
        })();
    
        // 自调用函数特点:函数自己执行,不需要进行调用
    
    
        // 自调用函数,如果有参数会怎么样?
        (function (a, b) {
            console.log(a, b);
        })(12, 35);
    
    代码执行效果

    2、匿名函数

    上面的函数就是一个自调用函数,我们会发现上面的函数没有函数名,像这种函数就被称之为匿名函数,我们当然也可以给他加上函数名,但是这并没有什么卵用。注意给它的参数不是写在function后面的小括号内,而是写在函数体后面的小括号中。

    3、函数的调用顺序

    我们在声明变量的时候会在变量前面加一个var关键字,我们在声明函数的时候也可以声明一个变量来接收函数表达式。我们都知道变量在声明之前调用会报错显示undefined,如果函数在声明之前调用会不会报错呢,我们可以看以下代码:

        fun(10)
        function fun(a) {
            console.log(a);
        }
    
        add(2,4);
        var add = function (a, b) {
            return console.log(a+b);
        }
    
    
    代码执行效果
        fun(10)
        function fun(a) {
            console.log(a);
        }
    
    
        var add = function (a, b) {
            return console.log(a+b);
        }
        add(2,4);
    
    
    Paste_Image.png

    从上面的代码我们可以看出,当我们用变量接收函数表达式的时候只能在函数声明后调用;当我们不用变量接收函数表达式的时候,即使是在函数声明之前我们也可以调用,一定要注意二者之间的区别。

    四、函数的封装和闭包

    JavaScript允许在函数内部嵌套函数---即函数定义和函数表达 式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包,闭包主要就是防止变量污染,下面这段代码就是一个简单的闭包。

        var add = (function(){
            var count = 0;
            return function () {
                count ++;
                console.log(count);
            }
        })()
        add();
    

    函数封装就是将一段实现同一个效果的代码放在一个函数表达式内,这样方便多次调用也可以防止变量污染,比如我们想要取一定范围内的随机数,就可以封装一个函数,代码如下:

         //封装涵数获取随机数
        function random (min, max) {
            return parseInt(Math.random() * (max - min + 1) + min);
        }
    
    
        // 封装函数求出圆的面积
        function circleArea(r) {
            return Math.PI * r * r;
        }
        console.log(circleArea(10));
    

    五、浏览器嗅探

    可以获取浏览器内核、浏览器、操作系统版本等信息。

    • window.navigator.userAgent

    以上内容纯属个人理解,由于水平有限,若有错漏之处敬请指出斧正,小弟不胜感激。

    相关文章

      网友评论

          本文标题:七、JavaScript函数(function)

          本文链接:https://www.haomeiwen.com/subject/vapfdttx.html