箭头函数是ES6中新增的函数,它用于简化函数的定义语法,有自己的特殊语法,接收一定数量的参数,并在其封闭的作用域的上下文(即定义它们的函数或其他代码)中操作。
箭头函数基本语法,具体如下:
0=>{}
箭头函数以小括号开头,在小括号中可以放置参数。小括号的后面要跟着箭头(=>),箭头后面要写一个大括号来表示函数体,这是箭头函数的固定语法。
箭头函数调用:因为箭头函数没有名字,我们通常的做法是把箭头函数赋值给一个变量,变量名就是函数名,然后通过变量名去调用函数即可。
<script>
const fn = () => {
console.log(123);
∥输出结果:123
};
fn();∥函数调用
</script>
特点1:省略大括号
在箭头函数中,如果函数体中只有一句代码,且代码的执行结果就是函数的返回值,此时可以省略函数体大括号。计算两个数值相加的结果,示例代码如下:
<script>
const sum = (numl, num2) => num1 + num2;
//等价于
// const sum = (num1, num2)=>{
// return num1 + num2;
//};
const result = sum(10, 20); //使用result接收sum() 函数执行的结果
console.log(result); //在控制台输出result值, 结果为30
</script>
特点2:省略参数外部的小括号
在箭头函数中,如果参数只有一个,可以省略参数外部的小括号。只有一个参数的函数定义方式,示例代码如下:
<script>
//传统的函数定义方式
//function fn(v){
// return
v;
//}
//ES6中函数定义方式
const fn = v => v;
</script>
特点2:省略参数外部的小括号
定义带有一个参数的函数,并在浏览器的弹出框中弹出参数值。示例代码如下:
<script>
const fn = v =>{
alert(v);
};
fn(20);
</script>
ES6前,JavaScript的this关键字指向的对象是在运行时基于函数的执行环境绑定的,在全局函数中,this指向的是window;当函数被作为某个对象的方法调用时,this就指向那个对象。
ES6中,箭头函数不绑定this关键字,它没有自己的this关键字,如果在箭头函数中使用this关键字,那么this关键字指向的是箭头函数定义位置的上下文this。也就是说,箭头函数被定义在哪,箭头函数中的this就指向谁。
箭头函数解决了this执行环境所造成的一些问题,如解决了匿名函数this指向的问题(匿名函数的执行环境具有全局性),包括setTimeout()和setInterval(0中使用this所造成的问题。
<script>
const obj = { name: 'zhangsan' };
function
fn(){
console.log(this); //输出结果:{name:"zhangsan"}
return () =>{
console.log(this); //输出结果:{name:"zhangsan"}
};
}
// call()方法可以改变函数内部的this指向,将函数fn(0内部的this指向obj对象
const resFn =
fn.call(obj);
resFn();
</script>