匿名函数、回调函数、钩子函数、箭头函数

一、匿名函数

匿名函数的作用:
(1)通过匿名函数可以实现闭包,闭包是可以访问在函数作用域内定义的变量的函数

1、定义

指的是没有名字的函数

// 声明一个普通的函数,函数的名字叫做fn
function fn() {
  console.log('test')
}

//  将函数的名字去掉(运行时会发现报错)
function () {
  console.log('test');
}

// 如需要定义一个匿名函数在匿名函数的外部加一层括号
(function (){
  console.log('test');
})
// 在函数的最后加上括号进行执行
(function (){
  console.log('test');
}) ()

2、匿名函数的使用场景

在Event中

<input type="button" value="btn" id="sub">

<script>
  // 获取按钮元素
   var btn = document.getElementById('sub')
  
  // 给按钮添加点击事件
   btn.onclick = function() {
       alter('start')
   }
 </script>

在object中

var obj = {
   name: 'zjs',
   age: 18,
   fn:function(){
     return "我的姓名是"+this.name+"今年"+this.age
   }
}
console.log(obj.fn()) //进行对象中的内容输出

在函数表达式中

// 将匿名函数赋值给变量fn
var fn = function (){
   return "2022"
}

//调用方式与调用普通函数一样
console.log(fn()); //2022

回调函数中

setInterval(function(){
  console.log("回调函数")
},1000)

返回值

// 将匿名函数作为返回值
function fn() {
   return function(){
     return 'test'
   }
}

// 调用匿名函数
console.log(fn()()); // test

// 或者调用
var box = fn()
console.log(box()) // test

模仿块级作用域

(function(){
   // 这里是块级作用域(私有作用域)
}())

// 块级作用域实例
function fn(){
  
  (function(){
    var t = 'test'
  })()
  console.log(t) //报错 t is not defined 
}

fn()

二、回调函数

1、定义

回调(callback)是作为参数传递给另一个函数的函数
允许函数调用另一个函数完成后执行

三、钩子函数

1、定义

钩子函数是在一个事件触发的时候,再系统级捕获到了他,然后做一些操作。
是一个函数,在系统消息出发时被系统调用
不是用户自己触发的
直白的说钩子函数就是回调函数,其实质就是在框架的说法,是在框架的生命周期的某个阶段触发的回调函数

2、实例(vue)

例如在vue的生命周期,mounted()事件中,在vue实例挂载之后会执行mounted()中的函数

<div id="#root"></div>

    <script>
    
        new Vue({  //new 一个实例对象
            el:"#root",
            data:{
                str:1,
            },
            mounted(){    //当我的实例挂载完毕之后 会执行  这个就是钩子函数
                console.log(123)
            }
        })

    </script>

四、箭头函数

(1)定义:

箭头函数没有自己的this、argument、super、new target,适用于本来需要匿名函数的地方,并且它不能用作构造函数

· 没有单独的this:在箭头函数出现之前,每一个新的函数根据它是被如何调用的来定义这个函数的this值:
如果该函数是一个构造函数,this指针指向一个新的对象
在严格模式下的函数调用下,this指向undefined
如果该函数是一个对象的方法,则它的this指针指向这个对象
常见使用到箭头函数的场景:

// 不使用箭头函数
function Person() {
  var age = 10;
  
  setInterval(function addAge() {
   this.age ++;
  },1000)
}

// 使用到箭头函数        箭头函数不会创建自己的this,它会从自己的作用域的上一层继承this
function Person() {
   var age = 10;
  
  setInterval( ()=> {
   this.age++
  },1000)
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值