• arrow function and bind


    Can you bind arrow functions?

    https://stackoverflow.com/questions/33308121/can-you-bind-arrow-functions

     

    You cannot "rebind" an arrow function. It will always be called with the context in which it was defined. Just use a normal function.

    From the ECMAScript 2015 Spec:

    Any reference to arguments, super, this, or new.target within an ArrowFunction must resolve to a binding in a lexically enclosing environment. Typically this will be the Function Environment of an immediately enclosing function.

    箭头函数中的this与词法域绑定, 即使使用bind企图改变this,也是徒劳的。

    To be complete, you can re-bind arrow functions, you just can't change the meaning of this.

    bind still has value for function arguments:

    ((a, b, c) => {
      console.info(a, b, c) // 1, 2, 3
    }).bind(undefined, 1, 2, 3)()
    

    Try it here: http://jsbin.com/motihanopi/edit?js,console


    箭头函数this确定, 普通函数中的this,由调用场景/对象确定。

    如果也想模拟arrow函数效果, 可以使用bind接口,在定义的时候, 就把this绑定到词法中的this:

    function (){

    }.bind(this)

    箭头函数不该使用场景

    https://dmitripavlutin.com/when-not-to-use-arrow-functions-in-javascript/

    Defining methods on an object

    Callback functions with dynamic context

    Invoking constructors

    Too short syntax

    箭头函数该使用场景

    函数短小

    函数式计算的入参

    需要确定this为词法域的

    https://www.imooc.com/article/20607

  • 相关阅读:
    ACM训练计划
    动态规划 最长公共子序列LCS
    Floyd最短路
    邻接表拓扑排序
    数字三角形(数塔) DP入门
    hdu 5533 计算几何 判断是否为正方形
    威尔逊定理--HDU2973
    二分--POJ-3258
    01背包--hdu2639
    矩阵快速幂--51nod-1242斐波那契数列的第N项
  • 原文地址:https://www.cnblogs.com/lightsong/p/10569121.html
Copyright © 2020-2023  润新知