JS中箭头函数和普通函数的区别

JS中箭头函数和普通函数的区别

ES6标准新增了一种新的函数:箭头函数Arrow Function

let fn = () => {};

箭头函数是一种非常好用的语法,其有着简洁的函数声明方法,还有很多的简写方式,下面详细的介绍一些箭头函数与普通函数的区别

箭头函数比普通函数更加简洁

// 箭头函数
let foo = () => {};

// 普通函数
function fn() {};
箭头函数的简写方式

1、省略括号,当箭头函数只有一个参数时,括号可以省略

let foo = item => {
	console.log(itme)
}

function fn(num) {
	console.log(num)
}

2、省略大括号,当箭头函数的函数体只有一个 return 语句时,可以省略 return 关键字和方法体的大括号

let foo = (num1, num2) => num1 + num2

function fn(num1, num2) {
	return num1 + num2
}

3、省略大小括号

let foo = x => y => x + y

function fn(x) {
	return function(y) {
		return x + y
	}
}

箭头函数没有自己的this

箭头函数的this继承其执行上下文中的this,且使用call/apply等方无法改变其this

var obj = {
	name: 'obj'
}
    
function bar1() {
	console.log(this);
}

let bar2 = () => {
	console.log(this);
}
bar1.call(obj) // obj
bar2.call(obj) // window

document.body.onclick = () => {
	// this: window 不是当前 body
}

document.body.onclick = function() {
	// this: body
}

箭头函数中没有arguments,可以使用…args

let foo = (...args) => {
	// console.log(arguments) // Uncaught ReferenceError: arguments is not defined
	console.log(...args)
}
foo(1, 2, 3, 4) // 1 2 3 4

箭头函数不能作为构造函数,被new执行

箭头函数中没有this不能给实例添加属性,且箭头函数没有prototype

let Foo = () => {
	this.x = 200
}

const f = new Foo() // Uncaught TypeError: Fn is not a constructor
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值