什么是高阶函数?

高阶函数:

可以被简单理解为函数的高级应用,JavaScript中函数可以被当成【值】来对待,基于这个特性实现函数的高级应用。

【值】就是 JavaScript 中的数据,如数值、字符串、布尔、对象等。

1.函数表达式:函数表达式和普通函数并无本质上的区别

  •  普通函数的声明与调用无顺序限制,推荐做法先声明再调用
  •  函数表达式必须要先声明再调用
// 函数表达式与普通函数本质上是一样的
let counter = function(x,y){
    return x + y
}
// 调用函数
let result = counter(5, 10)
console.log(result)

注意:

  • 函数也是【数据
  • 把函数赋值给变量 

2. 回调函数:

如果将函数 A 做为参数传递给函数 B 时,我们称函数 A 为回调函数 

简单理解: 当一个函数当做参数来传递给另外一个函数的时候,这个函数就是回调函数

比如:

function fn() {
      console.log('我是回调函数...')
}
// fn传递给了setInterval, fn就是回调函数
setInterval(fn, 1000)
box.addEventListener('click', function () {
    console.log('我也是回调函数')
})

 注意:

  • 回调函数本质还是函数,只不过把它当成参数使用
  • 使用匿名函数做为回调函数比较常见

环境对象:

指的是函数内部特殊的变量 this ,它代表着当前函数运行时所处的环境 

 作用:弄清楚this的指向,可以让我们代码更简洁 

  • 函数的调用方式不同,this 指代的对象也不同
  • 谁调用, this 就是谁 是判断 this 指向的粗略规则
  •  直接调用函数,其实相当于是 window.函数,所以 this 指代 window 

例1: 

let name = '小王', age = 17;
       let obj = {
            name: '阿JAY',
            objAge: this.age,
            myFun: function () {
                console.log(this.name + "年龄" + this.age);
            }
        }
        console.log(obj.objAge);  //17
        obj.myFun();  //阿JAY年龄undefined

例2:

let name = '阿伦';
        function shows() {
            console.log(this.name);
        }
        shows();  //阿伦

注意:比较一下这两者 this 的差别,第一个打印里面的 this 指向 obj,第二个全局声明的 shows() 函数 this 是 window ; 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值