美文网首页
JavaScript-函数

JavaScript-函数

作者: 权游一里 | 来源:发表于2018-05-08 10:42 被阅读0次

    JavaScript可以用关键字function来定义函数,函数的调用也不必放在函数声明之后,因为JavaScript存在提升(Hoisting)机制。

    提升是JavaScript默认将当前作用域提升到前面去的行为,应用在变量的声明与函数的声明。

    JavaScript函数的typeof类型为“function”,它也有属性和方法,也可以说它是一个对象。

    函数声明

    function funName(parameters){
      //....
    }
    
    //函数表达式,也是匿名函数(没有名称)
    var fun = function(a,b){ //....};
    fun(3,4);
    

    Function()构造函数

    var fun = new Function("a","b","return a-b");
    fun(4,3);
    

    不过声明函数时,使用function关键字就可以了。

    函数自调用

    (function(a,b){
      //....
    })(3,4);
    

    函数的属性和方法

    • arguments: 是一个参数数组,保存参数信息。
    • call():预定义的函数方法
    • apply():预定义的函数方法
    var myObject, myArray;
    function myFunction(a, b) {
        return a * b;
    }
    //按函数参数格式传入参数
    myObject = myFunction.call(myObject, 10, 2);
    //传入参数数组
    myArray = [10, 2];
    myObject = myFunction.apply(myObject, myArray);
    

    嵌套函数

    在 JavaScript 中,所有函数都能访问它们上一层的作用域。
    JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。

    function add() {
        var counter = 0;
        function plus() {counter += 1;}
        plus();    
        return counter; 
    }
    

    闭包

    闭包就是一种允许函数向关联的父级作用域寻址的访问特权。可以访问另一个函数作用域变量的函数,一般是定义在外层函数中的内层函数。

    var add = (function () {
        var counter = 0;
        return function () {return counter += 1;}
    })();
     
    add();
    add();
    add();
    

    特点

    • 占用更多内存
    • 不容易被释放

    相关文章

      网友评论

          本文标题:JavaScript-函数

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