美文网首页
js基础问题

js基础问题

作者: Rehab_dd3b | 来源:发表于2020-02-17 20:19 被阅读0次

    1.函数作为参数传值,后面加个括号则为立即执行该函数后,返回结果作为参数传值
    例如:

    function func1(cb) {
      console.log('func1')
    }
    function func2(arg1, arg2) {
      console.log('func2')
      return function() {
        console.log('func3')
      }
    }
    func1(func2('arg1', 'arg2'))
    //打印结果:func2 func1
    

    2.箭头函数没有自己的执行上下文,也没有arguments,做参数传递也不能通过call绑定this,细品

    let that = this
    function a(func) {
      let aa = 2
      console.log(that === this)
      func.call(this, aa, this)
    }
    
    a(function(aa, that) {
      console.log(aa, that === this)
    })
    //  打印结果:
    //  false
    //  2 true
    
    let that = this
    function a(func) {
      let aa = 2
      console.log(that === this)
      func.call(this, aa, this)
    }
    
    a((aa, that) => {
      console.log(aa, that === this)
    })
    //  打印结果:
    //  false
    //  2 false
    
    let that = this
    function a(func) {
      let aa = 2
      console.log(that === this)
      func.call(this, aa, this)
    }
    
    a((aa, _that) => {
      console.log(aa, that === this)
    })
    //  打印结果:
    //  false
    //  2 true
    

    相关文章

      网友评论

          本文标题:js基础问题

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