美文网首页
箭头函数

箭头函数

作者: 你喜欢吃青椒吗_c744 | 来源:发表于2019-07-29 19:42 被阅读0次
    • 箭头函数表达式的语法比函数表达式短,并且不绑定自己的 this,arguments,super或 new.target。
    • 此外,箭头函数最好在非方法函数中使用,且不能用作构造函数。
    • 不能用作构造器,和 new 一起用就会抛出错误。所以也没有 new.target 值
    • 箭头函数没有原型属性。由于不能使用 new 调用箭头函数,所以也没有构建原型的需求,于是箭头函数也不存在 prototype 这个属性。
    • yield 关键字通常不能在箭头函数中使用(除非是嵌套在允许使用的函数内)。因此,箭头函数不能用作生成器。
    • 箭头函数在参数和箭头之间不能换行哦

    箭头函数的引入有两个方面的作用:一是更简短的函数书写,二是对 this的词法解析

    基本语法

    let func = value => value;
    
    //相当于:
    let func = function (value) {
        return value;
    };
    
    //如果需要给函数传入多个参数:
    let func = (value, num) => value * num;
    
    //如果函数的代码块需要多条语句:
    let func = (value, num) => {
        return value * num
    };
    //要加{ }
    
    //与变量解构结合:
    let func = ({value, num}) => ({total: value * num})
    
    // 使用
    var result = func({
        value: 10,
        num: 10
    })
    
    console.log(result); // {total: 100}
    
    

    this

    箭头函数没有 this,所以需要通过查找作用域链来确定 this 的值。
    这就意味着如果箭头函数被非箭头函数包含,this 绑定的就是最近一层非箭头函数的 this。

        <script>
            let a = function (x) {
                this.x = x
                console.log(this.x);// 1
                let c = () => {
                    console.log(this.x); //1
                    console.log(this); //window
                }
                c()
            }
            a(1);
        </script>
    

    首先,箭头函数里没有x,我用this.x调用的是a里面的。此时,a里面又的this是作用于全局的。所以在箭头函数里console.log(this)打印出来window

    • 箭头函数没有this,换句话来说,箭头函数在哪个作用域下,箭头函数的this就是调用的就是父作用域。(箭头函数本身有一个作用域)

    参考文章

    深入理解ES6中的箭头函数
    ES6 系列之箭头函数
    JavaScript初学者必看“箭头函数”

    相关文章

      网友评论

          本文标题:箭头函数

          本文链接:https://www.haomeiwen.com/subject/ytrirctx.html