首页 /  技术专区  /  JavaScript 宽屏模式 >

JavaScript 箭头函数

目的:引入箭头函数的目的是更简短的函数写法并且不绑定this,箭头函数的语法比函数表达式更简洁

使用场景:箭头函数更适用于那些本来需要匿名函数的地方


1. 基本写法

语法1:基本写法

// 普通函数
const fn = function () {
    console.log('我是普通函数')
}
fn()

// 箭头函数
const fn = () => {
    console.log('我是箭头函数')
}
fn()

语法2:只有一个参数可以省略小括号

// 普通函数
const fn = function(x) {
    return x + x
}
console.log(fn(1))  // 2

// 箭头函数
const fn = x => {
    return x + x
}
console.log(fn(1))  // 2

语法3:如果函数体只有一行代码,可以写到一行上,并且无需写 return 直接返回值

// 普通函数
const fn = function(x, y) {
    return x + y
}
console.log(fn(1, 2))   // 3

// 箭头函数
const fn = (x, y) => x + y
console.log(fn(1, 2))   // 3

语法4:加括号的函数体返回对象字面量表达式

const fn1 = uname => ({uname: uname})
console.log(fn1('李庆林个人博客'))


总结:

1.箭头函数属于表达式函数,因此不存在函数提升

2.箭头函数只有一个参数时可以省略圆括号 ()

3.箭头函数函数体只有一行代码时可以省略花括号{},并自动做为返回值被返回

4.加括号的函数体返回对象字面量表达式


2. 箭头函数参数

1.普通函数有arguments 动态参数

2.箭头函数没有 arguments 动态参数,但是有 剩余参数 ..args

const getSum = (...args) => {
    let sum = 0
    for (let i = 0; i < args.length; i++) {
        sum += args[i]
    }
    return sum  // 函数体有多行代码不能省略return
}
console.log(getSum(1, 2, 3))    // 6


3. 箭头函数this

在箭头函数出现之前,每一个新函数根据它是被如何调用的来定义这个函数的this值,非常令人讨厌

箭头函数不会创建自己的this它只会从自己的作用域链的上一层沿用this。

console.log(this)   // 此处为window
const sayHi = function() {
    console.log(this)   // 普通函数指向调用者 此处为window
}
sayHi()
btn.addEventListener('click', () => {
    console.log(this)   // 当前this指向btn
})

const user = {
    name: '小明',
    // 该箭头函数中的 this 为函数声明环境中 this 一致
    walk: () => {
        console.log(this)   // 指向window 不是user
    }
}
user.walk()

在开发中【使用箭头函数前需要考虑函数中 this 的值】,事件回调函数使用箭头函数时,this 为全局的 window,因此DOM事件回调函数为了简便,还是不太推荐使用箭头函数

// DOM 节点
const btn = document.querySelector('.btn')
// 箭头函数 此时 this 指向了 window
btn.addEventListener('click', () => {
    console.log(this)
})
// 普通函数 此时 this 指向了 DOM 对象
btn.addEventListener('click', function() {
    console.log(this)
})



头像
0/200
图片验证码