ES6_6、箭头函数及声明特点

ES6允许使用箭头(=>)定义函数。

如:

     let fn=(a,b)=>{
         return a+b;
     }
     console.log(fn(2,3));

特点:

1、this是静态的,this始终指向函数声明(定义)时所在作用域下的this的值。

比如在全局作用域先定义连个函数,一个使用箭头函数定义。
image
上面两个函数调用都是输出ace,因为this都是window对象。函数作用域中没有name变量,于是就去上一级作用域链(全局作用域)找,var声明的name就是全局作用域window的属性。

call方法调用,call方法是将一个对象作为自己对象的属性,而且会改变this指向。

但是,箭头函数声明时候的this是全局上下文对象window,即使是用call也无法改变。
image
输出结果为:sabo,ace


2,不能作为构造实例化对象

let Person=(name,age)=>{
            this.name;
            this.age;

        }
let me=new  Person("张三",18);//报错

3、不能使用arguments;

        let fn=()=>{
            console.log(arguments);//报错
        };
        fn();

4、箭头函数的简写

①、省略小括号,当形参有且只有一个的时候。
        let add=n=>{
            return n+n;
        }   
        console.log( add(5));
②、省略花括号,当代码体只有一条语句的时候,而且此时return也必须省略,语句执行的结果就是返回值。
        let  pow=n=>n*n;    
        console.log( pow(9));

练习

1、点击 div 2秒后背景颜色变为粉色

image
箭头函数没有自己的this,只能用外层的this。


2、从数组中返回偶数的元素

const arr=[1,2,3,4,5,6,7,8];

        ////js写法
        // const result=arr.filter(function(item){
        //     if(item%2==0){
        //         return true;
        //     }
        // });

        //箭头函数
        const result=arr.filter(a=>a%2==0);

总结

简单来讲,就是箭头函数自己没有this,要用外层代码块的this。

箭头函数适合于this无关的回调,如 :定时器,数组方法的回调。

箭头函数不适合this有关的回调,如:事件回调,对象方法。

image

posted @   青仙  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示