JS函数

作者: 前往圣所的地方 | 来源:发表于2018-07-22 18:40 被阅读0次

    什么是函数?

    用来实现一种 功能方法

    函数的创建过程

    • 首先会在当前作用域中声明一个函数名(声明的函数名和使用var 声明的变量名是一样的。比如var sum;function sum(){};这两个名字算重复)
    • 浏览器会开辟一块内存空间(分配一个16进制的地址),将函数体内的JS代码以字符串的形式存储在内存空间中
    • 把内存空间的地址赋值给刚刚声明的那个函数名


      创建过程.png

    函数执行的过程

    • 首先浏览器会开辟一块新的内存空间(函数作用域)
    • 形参赋值
    • 变量提升
    • 将函数名引用地址里储存的JS字符串拿到函数作用域,把它们变成JS表达式,从上到下执行


      执行过程.png

    创建函数的方式

    1.函数声明

    function sum1(){
        //函数体
        //实现某一功能的 js代码
    }
    

    2.函数表达式(字面量)

    var sum2=function(){
        //函数体
        //实现某一功能的 js代码
    }
    

    两种声明方式有什么区别呢?举个例子:

    sum1(); //JJ
    sum2;// ""
    sum2();//报错,name is not a functinon
    function sum1(){
         console.log("JJ");
    }
    var sum2=function(){//这里只会将name这个变量声明提前,变量赋值不提前
          console.log("GD");
    };
    

    在js预解析的过程中,有变量的声明提前,函数也有声明提前。用函数声明的方式创建函数,函数声明提前,解析器会预先读取函数声明;而函数表达式,只有js执行到这里它所在的代码才会被执行

    1. 构造函数
        var sum3=New Function("参数1","参数2","return console.log("Jay")");
    

    其实这也是一个函数表达式。一般不推荐用这种方法定义函数,因为这种语法会导致解析两次代码(第一次是解析常规ECMAScript代码,第二次是解析传入构造函数中的字符串),从而影响性能。

    深入了解JavaScript闭包和原型链,这里走

    相关文章

      网友评论

          本文标题:JS函数

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