什么是函数?

本文介绍了JavaScript中函数的三种定义方式:声明提前的函数、赋值方式创建的函数以及匿名函数。强调了赋值方式创建函数的优先性和匿名函数在回调函数中的应用,以减少内存消耗和避免全局污染。
摘要由CSDN通过智能技术生成

什么是函数?

  只要一段代码可能被反复使用时,都要保存在一个函数中,然后反复调用

如何定义函数?(三种方式)

    1.声明函数创建函数

        定义:
           function  函数名 ( 形参列表 ) {
               //要反复使用的代码片段
               return 返回值;
           }
        使用:
            var 变量 = 函数名( 实参值列表 )
        注:
            给函数中的形参列表传值,等效于赋值 (var)
            如果有返回值(return),则将函数执行的结果返回到函数外部,保存到 = 左边的变量里
       问题:
            用声明方式创建的函数,最大的问题就是会被声明提前 
       解决:
            用赋值方式创建函数


              什么是声明提前?(hoist)

               在程序开始执行前,都是先在整段程序中 查找var声明的变量和 function声明的函                   数,将他们的定义提前到当前作用域的顶部集中创建赋值留在原地

            

            

             因为声明提前 function fun()声明的函数被提提前 会在函数执行前:
                     function fun( ){ console.log(1) }
                     function fun( ){ console.log(2) }
             由于在  html js css 中都是 解释执行  那么后边的同名的内容会覆盖前边的function                 所以只剩一个function  fun( ){ console.log(2) }
             那么 fun() fun() 执行结果都是 2


     2.赋值函数创建函数 (优先选择)

        定义:

            var 函数名 = function(形参列表){
                   函数体;
                   return 返回值;
             }
             揭示了函数的本质:
             函数名 其实是一个很普通的变量名而已 (例如:var a = 10)
             函数的本质是内存中一个引用类型的对象
                   函数在内存中 有一个唯一的地址值,来标识函数对象存储的位置
                   函数名中保存的其实不是函数本事 ,而是保存的函数地址值
                   调用函数时,其实js引擎先获得函数名变量中的地址 ------>再根据地址找到内存中的
                   函数对象------>在执行函数对象中保存的代码片段

         使用:
            var 变量 = 函数名( 实参值列表 )

          注:
            不会让函数声明提前 ,今后优先选择赋值方式创建函数

       

       因为 根据 =左边为声明变量  =右边为赋值 
       按声明提前的原理 var声明的变量会被提前到作用域顶部 但是赋值在原地
        var fun   //声明提前了
        var fun  //声明提前了   因为之前已经有过var fun 变量了 此时的var fun 什么也不做
        fun = function () { console.log(1)}  //赋值
        fun();   //1
        fun = function () { console.log(2)}  
        fun();   //2

     3.匿名函数

       什么是匿名函数?

           定义函数时,不指定函数名的函数。

       使用情景:

            所有的回调函数都要定义为匿名函数;
            匿名函数自调

       注:匿名函数节约内存;避免产生全局变量,造成全局污染

       什么是回调函数?

       回调函数:自己定义了函数,但是不由自己调用,而是交给另一个函数,由另一个函数         按需自动调用

      例如:arr.sort( function(a,b){ return a-b })   自己定义的函数 由arr主函数来自动调用的
        为什么回调函数都要定义为匿名函数?为了节约内存!!!

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值